|
38740
|
1437
|
32
|
2026-05-14T06:27:44.681176+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740064681_m1.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Mute tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said yes I will do that. Is there a way to setup languages to transcription?","depth":21,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes I will do that. Is there a way to setup languages to transcription?","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-1975085737178031554
|
8487585703635086293
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38742
|
1439
|
44
|
2026-05-14T06:27:45.432341+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740065432_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone
Send message
Gemini is AI and can make mistakes, including about people.
Your privacy and Gemini Opens in a new window
Your privacy and Gemini
Opens in a new window
Summarize page
Summarize page
Screenpipe [archive.db · 2071.1MB]
Screenpipe
[archive.db · 2071.1MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
12
/
05
/
2026
Calendar
Monitor
Jump to
--
:
--
Go
📅 Time Range Filter ▼
📅 Time Range Filter
▼
From:
09
:
45
To:
10
:
30
Apply Filter
Clear
APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN
−
1×
+
Follow
Follow
09:30
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00
18:30
19:00
19:30
20:00
20:30
21:00
21:30
SYS
: Thank you.
⏮ 30s
◀ 10s
⏸ Pause
10s ▶
30s ⏭
🔊 Auto-Play Audio: ON
10:28
iTerm2
Firefox
Slack
CleanShot X
PhpStorm
Finder
QuickTime Player
Alfred
coreautha
Raycast
Control Centre
Claude
Code
Activity Monitor
Windsurf
Anybox
MIC
SYS
SYS
Thank you....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.06304868,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"bounds":{"left":0.013297873,"top":0.09577015,"width":0.029587766,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"bounds":{"left":0.013297873,"top":0.12849163,"width":0.036901597,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Mute tab","depth":5,"bounds":{"left":0.011469414,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.020113032,"top":0.16121309,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.05651596,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.013297873,"top":0.19393456,"width":0.040724736,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.013297873,"top":0.22665602,"width":0.03756649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"bounds":{"left":0.013297873,"top":0.25937748,"width":0.012134309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"bounds":{"left":0.013297873,"top":0.29209897,"width":0.1100399,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"bounds":{"left":0.013297873,"top":0.32482043,"width":0.05668218,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.34796488,"width":0.06333112,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.29321808,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.30518618,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"bounds":{"left":0.3025266,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.07280585,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.08610372,"top":0.10454908,"width":0.028590426,"height":0.030327214},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"bounds":{"left":0.0887633,"top":0.10973663,"width":0.021941489,"height":0.020351157},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.2613032,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"bounds":{"left":0.27460107,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.28789893,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.068484046,"top":0.14764565,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.068484046,"top":0.15003991,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.02642952,"height":0.016360734},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.22041224,"height":0.057861134},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"bounds":{"left":0.18035239,"top":0.0,"width":0.015292553,"height":0.016360734},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.22174202,"height":0.057861134},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"bounds":{"left":0.075465426,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"bounds":{"left":0.08610372,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"bounds":{"left":0.09674202,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"bounds":{"left":0.107380316,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"bounds":{"left":0.11801862,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"bounds":{"left":0.12566489,"top":0.0905826,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"bounds":{"left":0.14029256,"top":0.0905826,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said yes I will do that. Is there a way to setup languages to transcription?","depth":21,"bounds":{"left":0.16023937,"top":0.100159615,"width":0.15026596,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"bounds":{"left":0.068484046,"top":0.1009577,"width":0.019946808,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes I will do that. Is there a way to setup languages to transcription?","depth":23,"bounds":{"left":0.16023937,"top":0.10175578,"width":0.12849069,"height":0.035514764},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"bounds":{"left":0.3025266,"top":0.17039107,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"bounds":{"left":0.09208777,"top":0.17278531,"width":0.030917553,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"bounds":{"left":0.08976064,"top":0.21428572,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"bounds":{"left":0.08976064,"top":0.21628092,"width":0.04105718,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.","depth":27,"bounds":{"left":0.0787899,"top":0.21747805,"width":0.23088431,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As for setting up languages for transcription,","depth":27,"bounds":{"left":0.0787899,"top":0.28850758,"width":0.10920878,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes, you can configure it","depth":27,"bounds":{"left":0.18799867,"top":0.28850758,"width":0.06333112,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", but it helps to understand how ScreenPipe handles language natively first.","depth":27,"bounds":{"left":0.0787899,"top":0.28850758,"width":0.20994017,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Transcription Engine Handles Language","depth":26,"bounds":{"left":0.0787899,"top":0.3499601,"width":0.234375,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Transcription Engine Handles Language","depth":27,"bounds":{"left":0.0787899,"top":0.35155627,"width":0.12549867,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses a","depth":27,"bounds":{"left":0.0787899,"top":0.37789306,"width":0.072972074,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"multilingual Whisper model","depth":27,"bounds":{"left":0.15176196,"top":0.37789306,"width":0.07047872,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and sets the language configuration to","depth":27,"bounds":{"left":0.0787899,"top":0.37789306,"width":0.23321144,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-Detect","depth":27,"bounds":{"left":0.08510638,"top":0.39864326,"width":0.032247342,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"bounds":{"left":0.11735372,"top":0.39864326,"width":0.0013297872,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.","depth":27,"bounds":{"left":0.0787899,"top":0.42817238,"width":0.23038563,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Advantage:","depth":29,"bounds":{"left":0.09142287,"top":0.47845173,"width":0.040724736,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.","depth":29,"bounds":{"left":0.09142287,"top":0.47845173,"width":0.22174202,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Drawback:","depth":29,"bounds":{"left":0.09142287,"top":0.5494813,"width":0.038896278,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.","depth":29,"bounds":{"left":0.09142287,"top":0.5494813,"width":0.20744681,"height":0.09936153},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How to Force a Specific Language","depth":26,"bounds":{"left":0.0787899,"top":0.67318434,"width":0.234375,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How to Force a Specific Language","depth":27,"bounds":{"left":0.0787899,"top":0.67478055,"width":0.08759973,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.","depth":27,"bounds":{"left":0.0787899,"top":0.70111734,"width":0.2278923,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are using the Desktop App UI:","depth":27,"bounds":{"left":0.0787899,"top":0.7721468,"width":0.09275266,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open the ScreenPipe settings.","depth":29,"bounds":{"left":0.09142287,"top":0.801676,"width":0.07347074,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Navigate to the","depth":29,"bounds":{"left":0.09142287,"top":0.8312051,"width":0.038231384,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio","depth":29,"bounds":{"left":0.12965426,"top":0.8312051,"width":0.014960106,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"bounds":{"left":0.14461437,"top":0.8312051,"width":0.0078125,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI/Transcription","depth":29,"bounds":{"left":0.15242687,"top":0.8312051,"width":0.041888297,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"section.","depth":29,"bounds":{"left":0.19431517,"top":0.8312051,"width":0.02044548,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Look for the","depth":29,"bounds":{"left":0.09142287,"top":0.8607342,"width":0.030585106,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper Language","depth":29,"bounds":{"left":0.12200798,"top":0.8607342,"width":0.04837101,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"bounds":{"left":0.17037898,"top":0.8607342,"width":0.0078125,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Transcription Language","depth":29,"bounds":{"left":0.17819148,"top":0.8607342,"width":0.061502658,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dropdown.","depth":29,"bounds":{"left":0.23969415,"top":0.8607342,"width":0.027260639,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Change it from \"Auto\" to your specific language (e.g., English, Bulgarian, or Slovak).","depth":29,"bounds":{"left":0.09142287,"top":0.8902634,"width":0.20079787,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are running ScreenPipe via CLI/Config:","depth":27,"bounds":{"left":0.0787899,"top":0.92378294,"width":0.116023935,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can modify your underlying configuration (usually found in","depth":27,"bounds":{"left":0.0787899,"top":0.9445331,"width":0.15159574,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/pipe.json","depth":28,"bounds":{"left":0.23238032,"top":0.94573027,"width":0.064328454,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:","depth":27,"bounds":{"left":0.0787899,"top":0.9445331,"width":0.234375,"height":0.05546689},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Slovak)","depth":29,"bounds":{"left":0.14012633,"top":1.0,"width":0.020777926,"height":-0.015562654},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Bulgarian)","depth":29,"bounds":{"left":0.14012633,"top":1.0,"width":0.027925532,"height":-0.04509175},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(English)","depth":29,"bounds":{"left":0.14012633,"top":1.0,"width":0.02244016,"height":-0.07462096},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Redo","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share and export","depth":22,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":22,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextArea","text":"Ask Gemini","depth":20,"bounds":{"left":0.08211436,"top":0.83439744,"width":0.22573139,"height":0.01915403},"on_screen":true,"value":"Ask Gemini","help_text":"","role_description":"text entry area","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Gemini","depth":21,"bounds":{"left":0.08211436,"top":0.8347965,"width":0.030086435,"height":0.018355945},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open upload file menu","depth":20,"bounds":{"left":0.078125,"top":0.87031126,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tools","depth":18,"bounds":{"left":0.094082445,"top":0.87031126,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open mode picker","depth":20,"bounds":{"left":0.27044547,"top":0.867917,"width":0.026097074,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pro","depth":23,"bounds":{"left":0.2757646,"top":0.87669593,"width":0.007480053,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Microphone","depth":19,"bounds":{"left":0.29853722,"top":0.867917,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Send message","depth":19,"bounds":{"left":0.30485374,"top":0.8671189,"width":0.013962766,"height":0.033519555},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini is AI and can make mistakes, including about people.","depth":17,"bounds":{"left":0.11702128,"top":0.92178774,"width":0.11170213,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your privacy and Gemini Opens in a new window","depth":17,"bounds":{"left":0.2287234,"top":0.92178774,"width":0.044215426,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your privacy and Gemini","depth":18,"bounds":{"left":0.2287234,"top":0.92178774,"width":0.044215426,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Opens in a new window","depth":19,"bounds":{"left":0.068484046,"top":0.92098963,"width":0.043218084,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Summarize page","depth":7,"bounds":{"left":0.07413564,"top":0.95730245,"width":0.053523935,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summarize page","depth":9,"bounds":{"left":0.07978723,"top":0.96249,"width":0.042220745,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Screenpipe [archive.db · 2071.1MB]","depth":7,"bounds":{"left":0.33061835,"top":0.061452515,"width":0.064328454,"height":0.017956903},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe","depth":8,"bounds":{"left":0.33061835,"top":0.06304868,"width":0.027759308,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[archive.db · 2071.1MB]","depth":9,"bounds":{"left":0.35970744,"top":0.06703911,"width":0.03523936,"height":0.009976057},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Activity","depth":7,"bounds":{"left":0.39960107,"top":0.059856344,"width":0.024767287,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search","depth":7,"bounds":{"left":0.42503324,"top":0.059856344,"width":0.023603724,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Audio","depth":7,"bounds":{"left":0.44930187,"top":0.059856344,"width":0.021110373,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Work Report","depth":7,"bounds":{"left":0.4710771,"top":0.059856344,"width":0.03507314,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Timetable","depth":7,"bounds":{"left":0.50681514,"top":0.059856344,"width":0.029587766,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Summary","depth":7,"bounds":{"left":0.53706783,"top":0.059856344,"width":0.034242023,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Date","depth":8,"bounds":{"left":0.93866354,"top":0.0650439,"width":0.008144947,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12","depth":9,"bounds":{"left":0.95545214,"top":0.06464485,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"bounds":{"left":0.96127,"top":0.06464485,"width":0.0023271276,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"05","depth":9,"bounds":{"left":0.9645944,"top":0.06464485,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"bounds":{"left":0.97041225,"top":0.06464485,"width":0.002493351,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026","depth":9,"bounds":{"left":0.97390294,"top":0.06464485,"width":0.009474734,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Calendar","depth":8,"bounds":{"left":0.9847075,"top":0.0650439,"width":0.0051529254,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Monitor","depth":9,"bounds":{"left":0.45262632,"top":0.10853951,"width":0.013464096,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jump to","depth":9,"bounds":{"left":0.8111702,"top":0.10853951,"width":0.01412899,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":10,"bounds":{"left":0.8312833,"top":0.10814046,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":9,"bounds":{"left":0.83710104,"top":0.10814046,"width":0.0023271276,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":10,"bounds":{"left":0.84042555,"top":0.10814046,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Go","depth":8,"bounds":{"left":0.85920876,"top":0.10454908,"width":0.012300532,"height":0.018754989},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"📅 Time Range Filter ▼","depth":9,"bounds":{"left":0.45561835,"top":0.14205906,"width":0.41289893,"height":0.019553073},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"📅 Time Range Filter","depth":10,"bounds":{"left":0.642121,"top":0.14604948,"width":0.036070477,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"▼","depth":10,"bounds":{"left":0.67918885,"top":0.14604948,"width":0.0028257978,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"From:","depth":11,"bounds":{"left":0.45561835,"top":0.1819633,"width":0.009973404,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"09","depth":12,"bounds":{"left":0.47290558,"top":0.18156424,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":11,"bounds":{"left":0.4787234,"top":0.18156424,"width":0.0023271276,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"45","depth":12,"bounds":{"left":0.4820479,"top":0.18156424,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"To:","depth":11,"bounds":{"left":0.5021609,"top":0.1819633,"width":0.005319149,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10","depth":12,"bounds":{"left":0.5147939,"top":0.18156424,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":11,"bounds":{"left":0.5206117,"top":0.18156424,"width":0.0023271276,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30","depth":12,"bounds":{"left":0.52393615,"top":0.18156424,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply Filter","depth":10,"bounds":{"left":0.5440492,"top":0.17797287,"width":0.027593086,"height":0.018754989},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Clear","depth":10,"bounds":{"left":0.5749667,"top":0.17797287,"width":0.016788565,"height":0.018754989},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN","depth":10,"bounds":{"left":0.45761302,"top":0.23743017,"width":0.10571808,"height":0.009976057},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"−","depth":9,"bounds":{"left":0.813996,"top":0.2330407,"width":0.009807181,"height":0.018754989},"on_screen":true,"help_text":"Zoom out","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1×","depth":10,"bounds":{"left":0.82795876,"top":0.23703113,"width":0.004155585,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"+","depth":9,"bounds":{"left":0.83643615,"top":0.2330407,"width":0.009640957,"height":0.018754989},"on_screen":true,"help_text":"Zoom in","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Follow","depth":10,"bounds":{"left":0.8494016,"top":0.23703113,"width":0.004654255,"height":0.011173184},"on_screen":true,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Follow","depth":10,"bounds":{"left":0.85538566,"top":0.23703113,"width":0.011136968,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"09:30","depth":13,"bounds":{"left":0.45910904,"top":0.32322428,"width":0.008643617,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10:00","depth":13,"bounds":{"left":0.47573137,"top":0.32322428,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10:30","depth":13,"bounds":{"left":0.4921875,"top":0.32322428,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11:00","depth":13,"bounds":{"left":0.50880986,"top":0.32322428,"width":0.0078125,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11:30","depth":13,"bounds":{"left":0.52526593,"top":0.32322428,"width":0.0078125,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12:00","depth":13,"bounds":{"left":0.5415558,"top":0.32322428,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12:30","depth":13,"bounds":{"left":0.55801195,"top":0.32322428,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13:00","depth":13,"bounds":{"left":0.57430184,"top":0.32322428,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13:30","depth":13,"bounds":{"left":0.59075797,"top":0.32322428,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14:00","depth":13,"bounds":{"left":0.6072141,"top":0.32322428,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14:30","depth":13,"bounds":{"left":0.6236702,"top":0.32322428,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15:00","depth":13,"bounds":{"left":0.64012635,"top":0.32322428,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15:30","depth":13,"bounds":{"left":0.6565825,"top":0.32322428,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16:00","depth":13,"bounds":{"left":0.67303854,"top":0.32322428,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16:30","depth":13,"bounds":{"left":0.68949467,"top":0.32322428,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17:00","depth":13,"bounds":{"left":0.7059508,"top":0.32322428,"width":0.007978723,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17:30","depth":13,"bounds":{"left":0.7224069,"top":0.32322428,"width":0.007978723,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18:00","depth":13,"bounds":{"left":0.7386968,"top":0.32322428,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18:30","depth":13,"bounds":{"left":0.75515294,"top":0.32322428,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19:00","depth":13,"bounds":{"left":0.77160907,"top":0.32322428,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19:30","depth":13,"bounds":{"left":0.78806514,"top":0.32322428,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20:00","depth":13,"bounds":{"left":0.804355,"top":0.32322428,"width":0.008643617,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20:30","depth":13,"bounds":{"left":0.82081115,"top":0.32322428,"width":0.008643617,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21:00","depth":13,"bounds":{"left":0.8374335,"top":0.32322428,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21:30","depth":13,"bounds":{"left":0.85388964,"top":0.32322428,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SYS","depth":11,"bounds":{"left":0.45628324,"top":0.36671987,"width":0.007978723,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":": Thank you.","depth":10,"bounds":{"left":0.46426198,"top":0.36671987,"width":0.022938829,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"⏮ 30s","depth":9,"bounds":{"left":0.45694813,"top":0.9888268,"width":0.023936171,"height":0.011173189},"on_screen":true,"help_text":"Ctrl+←","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"◀ 10s","depth":9,"bounds":{"left":0.48354387,"top":0.98922586,"width":0.02244016,"height":0.010774136},"on_screen":true,"help_text":"←","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"⏸ Pause","depth":9,"bounds":{"left":0.5086436,"top":0.9888268,"width":0.027925532,"height":0.011173189},"on_screen":true,"help_text":"Space","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"10s ▶","depth":9,"bounds":{"left":0.53922874,"top":0.98922586,"width":0.022273935,"height":0.010774136},"on_screen":true,"help_text":"→","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"30s ⏭","depth":9,"bounds":{"left":0.56416225,"top":0.9888268,"width":0.024102394,"height":0.011173189},"on_screen":true,"help_text":"Ctrl+→","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"🔊 Auto-Play Audio: ON","depth":9,"bounds":{"left":0.61486036,"top":0.9912211,"width":0.04870346,"height":0.00877893},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"10:28","depth":10,"bounds":{"left":0.85738033,"top":0.99561054,"width":0.009807181,"height":0.004389465},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"iTerm2","depth":9,"bounds":{"left":0.45761302,"top":1.0,"width":0.011801862,"height":-0.031125307},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox","depth":9,"bounds":{"left":0.47772607,"top":1.0,"width":0.011801862,"height":-0.031125307},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Slack","depth":9,"bounds":{"left":0.4978391,"top":1.0,"width":0.009474734,"height":-0.031125307},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"CleanShot X","depth":9,"bounds":{"left":0.515625,"top":1.0,"width":0.02144282,"height":-0.031125307},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"PhpStorm","depth":9,"bounds":{"left":0.545379,"top":1.0,"width":0.017287234,"height":-0.031125307},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finder","depth":9,"bounds":{"left":0.5709774,"top":1.0,"width":0.010970744,"height":-0.031125307},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"QuickTime Player","depth":9,"bounds":{"left":0.5902593,"top":1.0,"width":0.03025266,"height":-0.031125307},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Alfred","depth":9,"bounds":{"left":0.62882316,"top":1.0,"width":0.010472074,"height":-0.031125307},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"coreautha","depth":9,"bounds":{"left":0.6476064,"top":1.0,"width":0.017453458,"height":-0.031125307},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Raycast","depth":9,"bounds":{"left":0.673371,"top":1.0,"width":0.013630319,"height":-0.031125307},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Control Centre","depth":9,"bounds":{"left":0.6953125,"top":1.0,"width":0.025598405,"height":-0.031125307},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Claude","depth":9,"bounds":{"left":0.72922206,"top":1.0,"width":0.012134309,"height":-0.031125307},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Code","depth":9,"bounds":{"left":0.7496675,"top":1.0,"width":0.00930851,"height":-0.031125307},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity Monitor","depth":9,"bounds":{"left":0.76728725,"top":1.0,"width":0.027426861,"height":-0.031125307},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Windsurf","depth":9,"bounds":{"left":0.80302525,"top":1.0,"width":0.015791224,"height":-0.031125307},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Anybox","depth":9,"bounds":{"left":0.82712764,"top":1.0,"width":0.012965426,"height":-0.031125307},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"MIC","depth":9,"bounds":{"left":0.8484042,"top":1.0,"width":0.0068151597,"height":-0.031125307},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SYS","depth":9,"bounds":{"left":0.8635306,"top":1.0,"width":0.0071476065,"height":-0.031125307},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SYS","depth":8,"bounds":{"left":0.5028258,"top":0.26536313,"width":0.007480053,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Thank you.","depth":7,"bounds":{"left":0.5028258,"top":0.27853152,"width":0.019115692,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8794116047706864671
|
8632611220744711125
|
visual_change
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone
Send message
Gemini is AI and can make mistakes, including about people.
Your privacy and Gemini Opens in a new window
Your privacy and Gemini
Opens in a new window
Summarize page
Summarize page
Screenpipe [archive.db · 2071.1MB]
Screenpipe
[archive.db · 2071.1MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
12
/
05
/
2026
Calendar
Monitor
Jump to
--
:
--
Go
📅 Time Range Filter ▼
📅 Time Range Filter
▼
From:
09
:
45
To:
10
:
30
Apply Filter
Clear
APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN
−
1×
+
Follow
Follow
09:30
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00
18:30
19:00
19:30
20:00
20:30
21:00
21:30
SYS
: Thank you.
⏮ 30s
◀ 10s
⏸ Pause
10s ▶
30s ⏭
🔊 Auto-Play Audio: ON
10:28
iTerm2
Firefox
Slack
CleanShot X
PhpStorm
Finder
QuickTime Player
Alfred
coreautha
Raycast
Control Centre
Claude
Code
Activity Monitor
Windsurf
Anybox
MIC
SYS
SYS
Thank you....
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38743
|
1437
|
33
|
2026-05-14T06:27:49.541988+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740069541_m1.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone
Send message
Gemini is AI and can make mistakes, including about people.
Your privacy and Gemini Opens in a new window...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said yes I will do that. Is there a way to setup languages to transcription?","depth":21,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes I will do that. Is there a way to setup languages to transcription?","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As for setting up languages for transcription,","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes, you can configure it","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", but it helps to understand how ScreenPipe handles language natively first.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Transcription Engine Handles Language","depth":26,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Transcription Engine Handles Language","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses a","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"multilingual Whisper model","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and sets the language configuration to","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-Detect","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Advantage:","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Drawback:","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How to Force a Specific Language","depth":26,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How to Force a Specific Language","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are using the Desktop App UI:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open the ScreenPipe settings.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Navigate to the","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI/Transcription","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"section.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Look for the","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper Language","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Transcription Language","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dropdown.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Change it from \"Auto\" to your specific language (e.g., English, Bulgarian, or Slovak).","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are running ScreenPipe via CLI/Config:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can modify your underlying configuration (usually found in","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/pipe.json","depth":28,"bounds":{"left":0.0,"top":0.0,"width":0.134375,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Slovak)","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Bulgarian)","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(English)","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Redo","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share and export","depth":22,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":22,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextArea","text":"Ask Gemini","depth":20,"on_screen":true,"value":"Ask Gemini","help_text":"","role_description":"text entry area","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Gemini","depth":21,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open upload file menu","depth":20,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tools","depth":18,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open mode picker","depth":20,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pro","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Microphone","depth":19,"on_screen":true,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Send message","depth":19,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini is AI and can make mistakes, including about people.","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your privacy and Gemini Opens in a new window","depth":17,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
7252672520734540263
|
9209073003857062877
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone
Send message
Gemini is AI and can make mistakes, including about people.
Your privacy and Gemini Opens in a new window...
|
38740
|
NULL
|
NULL
|
NULL
|
|
38744
|
1439
|
45
|
2026-05-14T06:27:49.542005+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740069542_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone
Send message
Gemini is AI and can make mistakes, including about people.
Your privacy and Gemini Opens in a new window
Your privacy and Gemini
Opens in a new window
Summarize page
Summarize page
Screenpipe [archive.db · 2071.1MB]
Screenpipe
[archive.db · 2071.1MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.06304868,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"bounds":{"left":0.013297873,"top":0.09577015,"width":0.029587766,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"bounds":{"left":0.013297873,"top":0.12849163,"width":0.036901597,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.16121309,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.05651596,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.013297873,"top":0.19393456,"width":0.040724736,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.013297873,"top":0.22665602,"width":0.03756649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"bounds":{"left":0.013297873,"top":0.25937748,"width":0.012134309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"bounds":{"left":0.013297873,"top":0.29209897,"width":0.1100399,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"bounds":{"left":0.013297873,"top":0.32482043,"width":0.05668218,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.34796488,"width":0.06333112,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.29321808,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.30518618,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"bounds":{"left":0.3025266,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.07280585,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.08610372,"top":0.10454908,"width":0.028590426,"height":0.030327214},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"bounds":{"left":0.0887633,"top":0.10973663,"width":0.021941489,"height":0.020351157},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.2613032,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"bounds":{"left":0.27460107,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.28789893,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.068484046,"top":0.14764565,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.068484046,"top":0.15003991,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.02642952,"height":0.016360734},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.22041224,"height":0.057861134},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"bounds":{"left":0.18035239,"top":0.0,"width":0.015292553,"height":0.016360734},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.22174202,"height":0.057861134},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"bounds":{"left":0.075465426,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"bounds":{"left":0.08610372,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"bounds":{"left":0.09674202,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"bounds":{"left":0.107380316,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"bounds":{"left":0.11801862,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"bounds":{"left":0.12566489,"top":0.0905826,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"bounds":{"left":0.14029256,"top":0.0905826,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said yes I will do that. Is there a way to setup languages to transcription?","depth":21,"bounds":{"left":0.16023937,"top":0.100159615,"width":0.15026596,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"bounds":{"left":0.068484046,"top":0.1009577,"width":0.019946808,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes I will do that. Is there a way to setup languages to transcription?","depth":23,"bounds":{"left":0.16023937,"top":0.10175578,"width":0.12849069,"height":0.035514764},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"bounds":{"left":0.3025266,"top":0.17039107,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"bounds":{"left":0.09208777,"top":0.17278531,"width":0.030917553,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"bounds":{"left":0.08976064,"top":0.21428572,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"bounds":{"left":0.08976064,"top":0.21628092,"width":0.04105718,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.","depth":27,"bounds":{"left":0.0787899,"top":0.21747805,"width":0.23088431,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As for setting up languages for transcription,","depth":27,"bounds":{"left":0.0787899,"top":0.28850758,"width":0.10920878,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes, you can configure it","depth":27,"bounds":{"left":0.18799867,"top":0.28850758,"width":0.06333112,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", but it helps to understand how ScreenPipe handles language natively first.","depth":27,"bounds":{"left":0.0787899,"top":0.28850758,"width":0.20994017,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Transcription Engine Handles Language","depth":26,"bounds":{"left":0.0787899,"top":0.3499601,"width":0.234375,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Transcription Engine Handles Language","depth":27,"bounds":{"left":0.0787899,"top":0.35155627,"width":0.12549867,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses a","depth":27,"bounds":{"left":0.0787899,"top":0.37789306,"width":0.072972074,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"multilingual Whisper model","depth":27,"bounds":{"left":0.15176196,"top":0.37789306,"width":0.07047872,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and sets the language configuration to","depth":27,"bounds":{"left":0.0787899,"top":0.37789306,"width":0.23321144,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-Detect","depth":27,"bounds":{"left":0.08510638,"top":0.39864326,"width":0.032247342,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"bounds":{"left":0.11735372,"top":0.39864326,"width":0.0013297872,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.","depth":27,"bounds":{"left":0.0787899,"top":0.42817238,"width":0.23038563,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Advantage:","depth":29,"bounds":{"left":0.09142287,"top":0.47845173,"width":0.040724736,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.","depth":29,"bounds":{"left":0.09142287,"top":0.47845173,"width":0.22174202,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Drawback:","depth":29,"bounds":{"left":0.09142287,"top":0.5494813,"width":0.038896278,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.","depth":29,"bounds":{"left":0.09142287,"top":0.5494813,"width":0.20744681,"height":0.09936153},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How to Force a Specific Language","depth":26,"bounds":{"left":0.0787899,"top":0.67318434,"width":0.234375,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How to Force a Specific Language","depth":27,"bounds":{"left":0.0787899,"top":0.67478055,"width":0.08759973,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.","depth":27,"bounds":{"left":0.0787899,"top":0.70111734,"width":0.2278923,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are using the Desktop App UI:","depth":27,"bounds":{"left":0.0787899,"top":0.7721468,"width":0.09275266,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open the ScreenPipe settings.","depth":29,"bounds":{"left":0.09142287,"top":0.801676,"width":0.07347074,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Navigate to the","depth":29,"bounds":{"left":0.09142287,"top":0.8312051,"width":0.038231384,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio","depth":29,"bounds":{"left":0.12965426,"top":0.8312051,"width":0.014960106,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"bounds":{"left":0.14461437,"top":0.8312051,"width":0.0078125,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI/Transcription","depth":29,"bounds":{"left":0.15242687,"top":0.8312051,"width":0.041888297,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"section.","depth":29,"bounds":{"left":0.19431517,"top":0.8312051,"width":0.02044548,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Look for the","depth":29,"bounds":{"left":0.09142287,"top":0.8607342,"width":0.030585106,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper Language","depth":29,"bounds":{"left":0.12200798,"top":0.8607342,"width":0.04837101,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"bounds":{"left":0.17037898,"top":0.8607342,"width":0.0078125,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Transcription Language","depth":29,"bounds":{"left":0.17819148,"top":0.8607342,"width":0.061502658,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dropdown.","depth":29,"bounds":{"left":0.23969415,"top":0.8607342,"width":0.027260639,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Change it from \"Auto\" to your specific language (e.g., English, Bulgarian, or Slovak).","depth":29,"bounds":{"left":0.09142287,"top":0.8902634,"width":0.20079787,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are running ScreenPipe via CLI/Config:","depth":27,"bounds":{"left":0.0787899,"top":0.92378294,"width":0.116023935,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can modify your underlying configuration (usually found in","depth":27,"bounds":{"left":0.0787899,"top":0.9445331,"width":0.15159574,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/pipe.json","depth":28,"bounds":{"left":0.23238032,"top":0.94573027,"width":0.064328454,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:","depth":27,"bounds":{"left":0.0787899,"top":0.9445331,"width":0.234375,"height":0.05546689},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Slovak)","depth":29,"bounds":{"left":0.14012633,"top":1.0,"width":0.020777926,"height":-0.015562654},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Bulgarian)","depth":29,"bounds":{"left":0.14012633,"top":1.0,"width":0.027925532,"height":-0.04509175},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(English)","depth":29,"bounds":{"left":0.14012633,"top":1.0,"width":0.02244016,"height":-0.07462096},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Redo","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share and export","depth":22,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":22,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextArea","text":"Ask Gemini","depth":20,"bounds":{"left":0.08211436,"top":0.83439744,"width":0.22573139,"height":0.01915403},"on_screen":true,"value":"Ask Gemini","help_text":"","role_description":"text entry area","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Gemini","depth":21,"bounds":{"left":0.08211436,"top":0.8347965,"width":0.030086435,"height":0.018355945},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open upload file menu","depth":20,"bounds":{"left":0.078125,"top":0.87031126,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tools","depth":18,"bounds":{"left":0.094082445,"top":0.87031126,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open mode picker","depth":20,"bounds":{"left":0.27044547,"top":0.867917,"width":0.026097074,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pro","depth":23,"bounds":{"left":0.2757646,"top":0.87669593,"width":0.007480053,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Microphone","depth":19,"bounds":{"left":0.29853722,"top":0.867917,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Send message","depth":19,"bounds":{"left":0.30485374,"top":0.8671189,"width":0.013962766,"height":0.033519555},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini is AI and can make mistakes, including about people.","depth":17,"bounds":{"left":0.11702128,"top":0.92178774,"width":0.11170213,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your privacy and Gemini Opens in a new window","depth":17,"bounds":{"left":0.2287234,"top":0.92178774,"width":0.044215426,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your privacy and Gemini","depth":18,"bounds":{"left":0.2287234,"top":0.92178774,"width":0.044215426,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Opens in a new window","depth":19,"bounds":{"left":0.068484046,"top":0.92098963,"width":0.043218084,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Summarize page","depth":7,"bounds":{"left":0.07413564,"top":0.95730245,"width":0.053523935,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summarize page","depth":9,"bounds":{"left":0.07978723,"top":0.96249,"width":0.042220745,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Screenpipe [archive.db · 2071.1MB]","depth":7,"bounds":{"left":0.33061835,"top":0.061452515,"width":0.064328454,"height":0.017956903},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe","depth":8,"bounds":{"left":0.33061835,"top":0.06304868,"width":0.027759308,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[archive.db · 2071.1MB]","depth":9,"bounds":{"left":0.35970744,"top":0.06703911,"width":0.03523936,"height":0.009976057},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Activity","depth":7,"bounds":{"left":0.39960107,"top":0.059856344,"width":0.024767287,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search","depth":7,"bounds":{"left":0.42503324,"top":0.059856344,"width":0.023603724,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Audio","depth":7,"bounds":{"left":0.44930187,"top":0.059856344,"width":0.021110373,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Work Report","depth":7,"bounds":{"left":0.4710771,"top":0.059856344,"width":0.03507314,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Timetable","depth":7,"bounds":{"left":0.50681514,"top":0.059856344,"width":0.029587766,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Summary","depth":7,"bounds":{"left":0.53706783,"top":0.059856344,"width":0.034242023,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-2527110329049053212
|
8632612251536862173
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone
Send message
Gemini is AI and can make mistakes, including about people.
Your privacy and Gemini Opens in a new window
Your privacy and Gemini
Opens in a new window
Summarize page
Summarize page
Screenpipe [archive.db · 2071.1MB]
Screenpipe
[archive.db · 2071.1MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary...
|
38742
|
NULL
|
NULL
|
NULL
|
|
38745
|
1437
|
34
|
2026-05-14T06:27:50.049960+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740070049_m1.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone
Send message
Gemini is AI and can make mistakes, including about people.
Your privacy and Gemini Opens in a new window
Your privacy and Gemini
Opens in a new window
Summarize page
Summarize page
Screenpipe [archive.db · 2071.1MB]
Screenpipe
[archive.db · 2071.1MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
12
/
05
/
2026
Calendar
Monitor
Jump to
--
:
--
Go
📅 Time Range Filter ▼
📅 Time Range Filter
▼
From:
09
:
45
To:
10
:
30
Apply Filter
Clear
APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN
−
1×
+
Follow
Follow
09:30
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00
18:30
19:00
19:30
20:00
20:30
21:00
21:30
SYS
: Thank you.
⏮ 30s
◀ 10s
⏸ Pause
10s ▶
30s ⏭
🔊 Auto-Play Audio: ON
10:28
iTerm2
Firefox
Slack
CleanShot X
PhpStorm
Finder
QuickTime Player
Alfred
coreautha
Raycast
Control Centre
Claude
Code
Activity Monitor
Windsurf
Anybox
MIC
SYS...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said yes I will do that. Is there a way to setup languages to transcription?","depth":21,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes I will do that. Is there a way to setup languages to transcription?","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As for setting up languages for transcription,","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes, you can configure it","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", but it helps to understand how ScreenPipe handles language natively first.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Transcription Engine Handles Language","depth":26,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Transcription Engine Handles Language","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses a","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"multilingual Whisper model","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and sets the language configuration to","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-Detect","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Advantage:","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Drawback:","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How to Force a Specific Language","depth":26,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How to Force a Specific Language","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are using the Desktop App UI:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open the ScreenPipe settings.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Navigate to the","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI/Transcription","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"section.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Look for the","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper Language","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Transcription Language","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dropdown.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Change it from \"Auto\" to your specific language (e.g., English, Bulgarian, or Slovak).","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are running ScreenPipe via CLI/Config:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can modify your underlying configuration (usually found in","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/pipe.json","depth":28,"bounds":{"left":0.0,"top":0.0,"width":0.134375,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Slovak)","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Bulgarian)","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(English)","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Redo","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share and export","depth":22,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":22,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextArea","text":"Ask Gemini","depth":20,"on_screen":true,"value":"Ask Gemini","help_text":"","role_description":"text entry area","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Gemini","depth":21,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open upload file menu","depth":20,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tools","depth":18,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open mode picker","depth":20,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pro","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Microphone","depth":19,"on_screen":true,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Send message","depth":19,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini is AI and can make mistakes, including about people.","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your privacy and Gemini Opens in a new window","depth":17,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your privacy and Gemini","depth":18,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Opens in a new window","depth":19,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Summarize page","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summarize page","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Screenpipe [archive.db · 2071.1MB]","depth":7,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[archive.db · 2071.1MB]","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Activity","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Audio","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Work Report","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Timetable","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Summary","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Date","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"05","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Calendar","depth":8,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Monitor","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jump to","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Go","depth":8,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"📅 Time Range Filter ▼","depth":9,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"📅 Time Range Filter","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"▼","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"From:","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"09","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"45","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"To:","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apply Filter","depth":10,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Clear","depth":10,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"−","depth":9,"on_screen":true,"help_text":"Zoom out","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1×","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"+","depth":9,"on_screen":true,"help_text":"Zoom in","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Follow","depth":10,"on_screen":true,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Follow","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"09:30","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10:00","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10:30","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11:00","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11:30","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12:00","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12:30","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13:00","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13:30","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14:00","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14:30","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15:00","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15:30","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16:00","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16:30","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17:00","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17:30","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18:00","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18:30","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19:00","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19:30","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20:00","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20:30","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21:00","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21:30","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SYS","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":": Thank you.","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"⏮ 30s","depth":9,"bounds":{"left":0.38993055,"top":0.0,"width":0.05,"height":0.033888888},"on_screen":true,"help_text":"Ctrl+←","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"◀ 10s","depth":9,"bounds":{"left":0.4454861,"top":0.0,"width":0.046875,"height":0.033333335},"on_screen":true,"help_text":"←","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"⏸ Pause","depth":9,"bounds":{"left":0.49791667,"top":0.0,"width":0.058333334,"height":0.033888888},"on_screen":true,"help_text":"Space","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"10s ▶","depth":9,"bounds":{"left":0.56180555,"top":0.0,"width":0.046527777,"height":0.033333335},"on_screen":true,"help_text":"→","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"30s ⏭","depth":9,"bounds":{"left":0.61388886,"top":0.0,"width":0.050347224,"height":0.033888888},"on_screen":true,"help_text":"Ctrl+→","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"🔊 Auto-Play Audio: ON","depth":9,"bounds":{"left":0.71979165,"top":0.0,"width":0.10173611,"height":0.027222222},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"10:28","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"iTerm2","depth":9,"bounds":{"left":0.39131945,"top":0.02,"width":0.024652777,"height":0.015},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox","depth":9,"bounds":{"left":0.43333334,"top":0.02,"width":0.024652777,"height":0.015},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Slack","depth":9,"bounds":{"left":0.47534722,"top":0.02,"width":0.019791666,"height":0.015},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"CleanShot X","depth":9,"bounds":{"left":0.5125,"top":0.02,"width":0.044791665,"height":0.015},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"PhpStorm","depth":9,"bounds":{"left":0.5746528,"top":0.02,"width":0.036111113,"height":0.015},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finder","depth":9,"bounds":{"left":0.628125,"top":0.02,"width":0.022916667,"height":0.015},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"QuickTime Player","depth":9,"bounds":{"left":0.6684028,"top":0.02,"width":0.063194446,"height":0.015},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Alfred","depth":9,"bounds":{"left":0.74895835,"top":0.02,"width":0.021875,"height":0.015},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"coreautha","depth":9,"bounds":{"left":0.7881944,"top":0.02,"width":0.036458332,"height":0.015},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Raycast","depth":9,"bounds":{"left":0.8420139,"top":0.02,"width":0.028472222,"height":0.015},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Control Centre","depth":9,"bounds":{"left":0.88784724,"top":0.02,"width":0.05347222,"height":0.015},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Claude","depth":9,"bounds":{"left":0.95868057,"top":0.02,"width":0.025347222,"height":0.015},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Code","depth":9,"bounds":{"left":1.0,"top":0.02,"width":-0.0013889074,"height":0.015},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity Monitor","depth":9,"bounds":{"left":1.0,"top":0.02,"width":-0.038194418,"height":0.015},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Windsurf","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Anybox","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"MIC","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SYS","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
9116782460483310101
|
8637114889091558357
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone
Send message
Gemini is AI and can make mistakes, including about people.
Your privacy and Gemini Opens in a new window
Your privacy and Gemini
Opens in a new window
Summarize page
Summarize page
Screenpipe [archive.db · 2071.1MB]
Screenpipe
[archive.db · 2071.1MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
12
/
05
/
2026
Calendar
Monitor
Jump to
--
:
--
Go
📅 Time Range Filter ▼
📅 Time Range Filter
▼
From:
09
:
45
To:
10
:
30
Apply Filter
Clear
APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN
−
1×
+
Follow
Follow
09:30
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00
18:30
19:00
19:30
20:00
20:30
21:00
21:30
SYS
: Thank you.
⏮ 30s
◀ 10s
⏸ Pause
10s ▶
30s ⏭
🔊 Auto-Play Audio: ON
10:28
iTerm2
Firefox
Slack
CleanShot X
PhpStorm
Finder
QuickTime Player
Alfred
coreautha
Raycast
Control Centre
Claude
Code
Activity Monitor
Windsurf
Anybox
MIC
SYS...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38746
|
1437
|
35
|
2026-05-14T06:27:55.846124+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740075846_m1.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said yes I will do that. Is there a way to setup languages to transcription?","depth":21,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes I will do that. Is there a way to setup languages to transcription?","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As for setting up languages for transcription,","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes, you can configure it","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", but it helps to understand how ScreenPipe handles language natively first.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Transcription Engine Handles Language","depth":26,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Transcription Engine Handles Language","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses a","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"multilingual Whisper model","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and sets the language configuration to","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-Detect","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Advantage:","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Drawback:","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How to Force a Specific Language","depth":26,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How to Force a Specific Language","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are using the Desktop App UI:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open the ScreenPipe settings.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Navigate to the","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI/Transcription","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"section.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Look for the","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper Language","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Transcription Language","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dropdown.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Change it from \"Auto\" to your specific language (e.g., English, Bulgarian, or Slovak).","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are running ScreenPipe via CLI/Config:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can modify your underlying configuration (usually found in","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
4815521470932946861
|
8632687007606909917
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in...
|
38745
|
NULL
|
NULL
|
NULL
|
|
38747
|
1439
|
46
|
2026-05-14T06:27:55.846136+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740075846_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.06304868,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"bounds":{"left":0.013297873,"top":0.09577015,"width":0.029587766,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"bounds":{"left":0.013297873,"top":0.12849163,"width":0.036901597,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.16121309,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.05651596,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.013297873,"top":0.19393456,"width":0.040724736,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.013297873,"top":0.22665602,"width":0.03756649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"bounds":{"left":0.013297873,"top":0.25937748,"width":0.012134309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"bounds":{"left":0.013297873,"top":0.29209897,"width":0.1100399,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"bounds":{"left":0.013297873,"top":0.32482043,"width":0.05668218,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.34796488,"width":0.06333112,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.29321808,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.30518618,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"bounds":{"left":0.3025266,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.07280585,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.08610372,"top":0.10454908,"width":0.028590426,"height":0.030327214},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"bounds":{"left":0.0887633,"top":0.10973663,"width":0.021941489,"height":0.020351157},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.2613032,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"bounds":{"left":0.27460107,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.28789893,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.068484046,"top":0.14764565,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.068484046,"top":0.15003991,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.02642952,"height":0.016360734},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.22041224,"height":0.057861134},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"bounds":{"left":0.18035239,"top":0.0,"width":0.015292553,"height":0.016360734},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.22174202,"height":0.057861134},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"bounds":{"left":0.075465426,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"bounds":{"left":0.08610372,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"bounds":{"left":0.09674202,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"bounds":{"left":0.107380316,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"bounds":{"left":0.11801862,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"bounds":{"left":0.12566489,"top":0.0905826,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"bounds":{"left":0.14029256,"top":0.0905826,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said yes I will do that. Is there a way to setup languages to transcription?","depth":21,"bounds":{"left":0.16023937,"top":0.100159615,"width":0.15026596,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"bounds":{"left":0.068484046,"top":0.1009577,"width":0.019946808,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes I will do that. Is there a way to setup languages to transcription?","depth":23,"bounds":{"left":0.16023937,"top":0.10175578,"width":0.12849069,"height":0.035514764},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"bounds":{"left":0.3025266,"top":0.17039107,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"bounds":{"left":0.09208777,"top":0.17278531,"width":0.030917553,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"bounds":{"left":0.08976064,"top":0.21428572,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"bounds":{"left":0.08976064,"top":0.21628092,"width":0.04105718,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.","depth":27,"bounds":{"left":0.0787899,"top":0.21747805,"width":0.23088431,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As for setting up languages for transcription,","depth":27,"bounds":{"left":0.0787899,"top":0.28850758,"width":0.10920878,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes, you can configure it","depth":27,"bounds":{"left":0.18799867,"top":0.28850758,"width":0.06333112,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", but it helps to understand how ScreenPipe handles language natively first.","depth":27,"bounds":{"left":0.0787899,"top":0.28850758,"width":0.20994017,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Transcription Engine Handles Language","depth":26,"bounds":{"left":0.0787899,"top":0.3499601,"width":0.234375,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Transcription Engine Handles Language","depth":27,"bounds":{"left":0.0787899,"top":0.35155627,"width":0.12549867,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses a","depth":27,"bounds":{"left":0.0787899,"top":0.37789306,"width":0.072972074,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"multilingual Whisper model","depth":27,"bounds":{"left":0.15176196,"top":0.37789306,"width":0.07047872,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and sets the language configuration to","depth":27,"bounds":{"left":0.0787899,"top":0.37789306,"width":0.23321144,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-Detect","depth":27,"bounds":{"left":0.08510638,"top":0.39864326,"width":0.032247342,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"bounds":{"left":0.11735372,"top":0.39864326,"width":0.0013297872,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.","depth":27,"bounds":{"left":0.0787899,"top":0.42817238,"width":0.23038563,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Advantage:","depth":29,"bounds":{"left":0.09142287,"top":0.47845173,"width":0.040724736,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.","depth":29,"bounds":{"left":0.09142287,"top":0.47845173,"width":0.22174202,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Drawback:","depth":29,"bounds":{"left":0.09142287,"top":0.5494813,"width":0.038896278,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.","depth":29,"bounds":{"left":0.09142287,"top":0.5494813,"width":0.20744681,"height":0.09936153},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How to Force a Specific Language","depth":26,"bounds":{"left":0.0787899,"top":0.67318434,"width":0.234375,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How to Force a Specific Language","depth":27,"bounds":{"left":0.0787899,"top":0.67478055,"width":0.08759973,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.","depth":27,"bounds":{"left":0.0787899,"top":0.70111734,"width":0.2278923,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are using the Desktop App UI:","depth":27,"bounds":{"left":0.0787899,"top":0.7721468,"width":0.09275266,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open the ScreenPipe settings.","depth":29,"bounds":{"left":0.09142287,"top":0.801676,"width":0.07347074,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Navigate to the","depth":29,"bounds":{"left":0.09142287,"top":0.8312051,"width":0.038231384,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio","depth":29,"bounds":{"left":0.12965426,"top":0.8312051,"width":0.014960106,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"bounds":{"left":0.14461437,"top":0.8312051,"width":0.0078125,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI/Transcription","depth":29,"bounds":{"left":0.15242687,"top":0.8312051,"width":0.041888297,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"section.","depth":29,"bounds":{"left":0.19431517,"top":0.8312051,"width":0.02044548,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Look for the","depth":29,"bounds":{"left":0.09142287,"top":0.8607342,"width":0.030585106,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper Language","depth":29,"bounds":{"left":0.12200798,"top":0.8607342,"width":0.04837101,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"bounds":{"left":0.17037898,"top":0.8607342,"width":0.0078125,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Transcription Language","depth":29,"bounds":{"left":0.17819148,"top":0.8607342,"width":0.061502658,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dropdown.","depth":29,"bounds":{"left":0.23969415,"top":0.8607342,"width":0.027260639,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-3981931068550386328
|
8632685918833748949
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown....
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38748
|
1437
|
36
|
2026-05-14T06:27:57.295548+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740077295_m1.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone
Send message
Gemini is AI and can make mistakes, including about people.
Your privacy and Gemini Opens in a new window
Your privacy and Gemini
Opens in a new window
Summarize page
Summarize page
Screenpipe [archive.db · 2071.1MB]
Screenpipe
[archive.db · 2071.1MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
12
/
05
/
2026...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said yes I will do that. Is there a way to setup languages to transcription?","depth":21,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes I will do that. Is there a way to setup languages to transcription?","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As for setting up languages for transcription,","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes, you can configure it","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", but it helps to understand how ScreenPipe handles language natively first.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Transcription Engine Handles Language","depth":26,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Transcription Engine Handles Language","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses a","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"multilingual Whisper model","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and sets the language configuration to","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-Detect","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Advantage:","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Drawback:","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How to Force a Specific Language","depth":26,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How to Force a Specific Language","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are using the Desktop App UI:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open the ScreenPipe settings.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Navigate to the","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI/Transcription","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"section.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Look for the","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper Language","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Transcription Language","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dropdown.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Change it from \"Auto\" to your specific language (e.g., English, Bulgarian, or Slovak).","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are running ScreenPipe via CLI/Config:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can modify your underlying configuration (usually found in","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/pipe.json","depth":28,"bounds":{"left":0.0,"top":0.0,"width":0.134375,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Slovak)","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Bulgarian)","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(English)","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Redo","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share and export","depth":22,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":22,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextArea","text":"Ask Gemini","depth":20,"on_screen":true,"value":"Ask Gemini","help_text":"","role_description":"text entry area","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Gemini","depth":21,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open upload file menu","depth":20,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tools","depth":18,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open mode picker","depth":20,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pro","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Microphone","depth":19,"on_screen":true,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Send message","depth":19,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini is AI and can make mistakes, including about people.","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your privacy and Gemini Opens in a new window","depth":17,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your privacy and Gemini","depth":18,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Opens in a new window","depth":19,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Summarize page","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summarize page","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Screenpipe [archive.db · 2071.1MB]","depth":7,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[archive.db · 2071.1MB]","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Activity","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Audio","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Work Report","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Timetable","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Summary","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Date","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"05","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
3911498094355917053
|
8632611152025234397
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone
Send message
Gemini is AI and can make mistakes, including about people.
Your privacy and Gemini Opens in a new window
Your privacy and Gemini
Opens in a new window
Summarize page
Summarize page
Screenpipe [archive.db · 2071.1MB]
Screenpipe
[archive.db · 2071.1MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
12
/
05
/
2026...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38749
|
1439
|
47
|
2026-05-14T06:27:57.295563+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740077295_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone
Send message
Gemini is AI and can make mistakes, including about people.
Your privacy and Gemini Opens in a new window
Your privacy and Gemini
Opens in a new window
Summarize page
Summarize page
Screenpipe [archive.db · 2071.1MB]
Screenpipe
[archive.db · 2071.1MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
12
/
05
/
2026
Calendar
Monitor...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.06304868,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"bounds":{"left":0.013297873,"top":0.09577015,"width":0.029587766,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"bounds":{"left":0.013297873,"top":0.12849163,"width":0.036901597,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.16121309,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.05651596,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.013297873,"top":0.19393456,"width":0.040724736,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.013297873,"top":0.22665602,"width":0.03756649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"bounds":{"left":0.013297873,"top":0.25937748,"width":0.012134309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"bounds":{"left":0.013297873,"top":0.29209897,"width":0.1100399,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"bounds":{"left":0.013297873,"top":0.32482043,"width":0.05668218,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.34796488,"width":0.06333112,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.29321808,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.30518618,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"bounds":{"left":0.3025266,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.07280585,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.08610372,"top":0.10454908,"width":0.028590426,"height":0.030327214},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"bounds":{"left":0.0887633,"top":0.10973663,"width":0.021941489,"height":0.020351157},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.2613032,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"bounds":{"left":0.27460107,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.28789893,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.068484046,"top":0.14764565,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.068484046,"top":0.15003991,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.02642952,"height":0.016360734},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.22041224,"height":0.057861134},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"bounds":{"left":0.18035239,"top":0.0,"width":0.015292553,"height":0.016360734},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.22174202,"height":0.057861134},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"bounds":{"left":0.075465426,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"bounds":{"left":0.08610372,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"bounds":{"left":0.09674202,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"bounds":{"left":0.107380316,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"bounds":{"left":0.11801862,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"bounds":{"left":0.12566489,"top":0.0905826,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"bounds":{"left":0.14029256,"top":0.0905826,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said yes I will do that. Is there a way to setup languages to transcription?","depth":21,"bounds":{"left":0.16023937,"top":0.100159615,"width":0.15026596,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"bounds":{"left":0.068484046,"top":0.1009577,"width":0.019946808,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes I will do that. Is there a way to setup languages to transcription?","depth":23,"bounds":{"left":0.16023937,"top":0.10175578,"width":0.12849069,"height":0.035514764},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"bounds":{"left":0.3025266,"top":0.17039107,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"bounds":{"left":0.09208777,"top":0.17278531,"width":0.030917553,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"bounds":{"left":0.08976064,"top":0.21428572,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"bounds":{"left":0.08976064,"top":0.21628092,"width":0.04105718,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.","depth":27,"bounds":{"left":0.0787899,"top":0.21747805,"width":0.23088431,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As for setting up languages for transcription,","depth":27,"bounds":{"left":0.0787899,"top":0.28850758,"width":0.10920878,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes, you can configure it","depth":27,"bounds":{"left":0.18799867,"top":0.28850758,"width":0.06333112,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", but it helps to understand how ScreenPipe handles language natively first.","depth":27,"bounds":{"left":0.0787899,"top":0.28850758,"width":0.20994017,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Transcription Engine Handles Language","depth":26,"bounds":{"left":0.0787899,"top":0.3499601,"width":0.234375,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Transcription Engine Handles Language","depth":27,"bounds":{"left":0.0787899,"top":0.35155627,"width":0.12549867,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses a","depth":27,"bounds":{"left":0.0787899,"top":0.37789306,"width":0.072972074,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"multilingual Whisper model","depth":27,"bounds":{"left":0.15176196,"top":0.37789306,"width":0.07047872,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and sets the language configuration to","depth":27,"bounds":{"left":0.0787899,"top":0.37789306,"width":0.23321144,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-Detect","depth":27,"bounds":{"left":0.08510638,"top":0.39864326,"width":0.032247342,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"bounds":{"left":0.11735372,"top":0.39864326,"width":0.0013297872,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.","depth":27,"bounds":{"left":0.0787899,"top":0.42817238,"width":0.23038563,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Advantage:","depth":29,"bounds":{"left":0.09142287,"top":0.47845173,"width":0.040724736,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.","depth":29,"bounds":{"left":0.09142287,"top":0.47845173,"width":0.22174202,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Drawback:","depth":29,"bounds":{"left":0.09142287,"top":0.5494813,"width":0.038896278,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.","depth":29,"bounds":{"left":0.09142287,"top":0.5494813,"width":0.20744681,"height":0.09936153},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How to Force a Specific Language","depth":26,"bounds":{"left":0.0787899,"top":0.67318434,"width":0.234375,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How to Force a Specific Language","depth":27,"bounds":{"left":0.0787899,"top":0.67478055,"width":0.08759973,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.","depth":27,"bounds":{"left":0.0787899,"top":0.70111734,"width":0.2278923,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are using the Desktop App UI:","depth":27,"bounds":{"left":0.0787899,"top":0.7721468,"width":0.09275266,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open the ScreenPipe settings.","depth":29,"bounds":{"left":0.09142287,"top":0.801676,"width":0.07347074,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Navigate to the","depth":29,"bounds":{"left":0.09142287,"top":0.8312051,"width":0.038231384,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio","depth":29,"bounds":{"left":0.12965426,"top":0.8312051,"width":0.014960106,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"bounds":{"left":0.14461437,"top":0.8312051,"width":0.0078125,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI/Transcription","depth":29,"bounds":{"left":0.15242687,"top":0.8312051,"width":0.041888297,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"section.","depth":29,"bounds":{"left":0.19431517,"top":0.8312051,"width":0.02044548,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Look for the","depth":29,"bounds":{"left":0.09142287,"top":0.8607342,"width":0.030585106,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper Language","depth":29,"bounds":{"left":0.12200798,"top":0.8607342,"width":0.04837101,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"bounds":{"left":0.17037898,"top":0.8607342,"width":0.0078125,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Transcription Language","depth":29,"bounds":{"left":0.17819148,"top":0.8607342,"width":0.061502658,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dropdown.","depth":29,"bounds":{"left":0.23969415,"top":0.8607342,"width":0.027260639,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Change it from \"Auto\" to your specific language (e.g., English, Bulgarian, or Slovak).","depth":29,"bounds":{"left":0.09142287,"top":0.8902634,"width":0.20079787,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are running ScreenPipe via CLI/Config:","depth":27,"bounds":{"left":0.0787899,"top":0.92378294,"width":0.116023935,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can modify your underlying configuration (usually found in","depth":27,"bounds":{"left":0.0787899,"top":0.9445331,"width":0.15159574,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/pipe.json","depth":28,"bounds":{"left":0.23238032,"top":0.94573027,"width":0.064328454,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:","depth":27,"bounds":{"left":0.0787899,"top":0.9445331,"width":0.234375,"height":0.05546689},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Slovak)","depth":29,"bounds":{"left":0.14012633,"top":1.0,"width":0.020777926,"height":-0.015562654},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Bulgarian)","depth":29,"bounds":{"left":0.14012633,"top":1.0,"width":0.027925532,"height":-0.04509175},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(English)","depth":29,"bounds":{"left":0.14012633,"top":1.0,"width":0.02244016,"height":-0.07462096},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Redo","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share and export","depth":22,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":22,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextArea","text":"Ask Gemini","depth":20,"bounds":{"left":0.08211436,"top":0.83439744,"width":0.22573139,"height":0.01915403},"on_screen":true,"value":"Ask Gemini","help_text":"","role_description":"text entry area","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Gemini","depth":21,"bounds":{"left":0.08211436,"top":0.8347965,"width":0.030086435,"height":0.018355945},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open upload file menu","depth":20,"bounds":{"left":0.078125,"top":0.87031126,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tools","depth":18,"bounds":{"left":0.094082445,"top":0.87031126,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open mode picker","depth":20,"bounds":{"left":0.27044547,"top":0.867917,"width":0.026097074,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pro","depth":23,"bounds":{"left":0.2757646,"top":0.87669593,"width":0.007480053,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Microphone","depth":19,"bounds":{"left":0.29853722,"top":0.867917,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Send message","depth":19,"bounds":{"left":0.30485374,"top":0.8671189,"width":0.013962766,"height":0.033519555},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini is AI and can make mistakes, including about people.","depth":17,"bounds":{"left":0.11702128,"top":0.92178774,"width":0.11170213,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your privacy and Gemini Opens in a new window","depth":17,"bounds":{"left":0.2287234,"top":0.92178774,"width":0.044215426,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your privacy and Gemini","depth":18,"bounds":{"left":0.2287234,"top":0.92178774,"width":0.044215426,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Opens in a new window","depth":19,"bounds":{"left":0.068484046,"top":0.92098963,"width":0.043218084,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Summarize page","depth":7,"bounds":{"left":0.07413564,"top":0.95730245,"width":0.053523935,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summarize page","depth":9,"bounds":{"left":0.07978723,"top":0.96249,"width":0.042220745,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Screenpipe [archive.db · 2071.1MB]","depth":7,"bounds":{"left":0.33061835,"top":0.061452515,"width":0.064328454,"height":0.017956903},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe","depth":8,"bounds":{"left":0.33061835,"top":0.06304868,"width":0.027759308,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[archive.db · 2071.1MB]","depth":9,"bounds":{"left":0.35970744,"top":0.06703911,"width":0.03523936,"height":0.009976057},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Activity","depth":7,"bounds":{"left":0.39960107,"top":0.059856344,"width":0.024767287,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search","depth":7,"bounds":{"left":0.42503324,"top":0.059856344,"width":0.023603724,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Audio","depth":7,"bounds":{"left":0.44930187,"top":0.059856344,"width":0.021110373,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Work Report","depth":7,"bounds":{"left":0.4710771,"top":0.059856344,"width":0.03507314,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Timetable","depth":7,"bounds":{"left":0.50681514,"top":0.059856344,"width":0.029587766,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Summary","depth":7,"bounds":{"left":0.53706783,"top":0.059856344,"width":0.034242023,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Date","depth":8,"bounds":{"left":0.93866354,"top":0.0650439,"width":0.008144947,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12","depth":9,"bounds":{"left":0.95545214,"top":0.06464485,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"bounds":{"left":0.96127,"top":0.06464485,"width":0.0023271276,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"05","depth":9,"bounds":{"left":0.9645944,"top":0.06464485,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"bounds":{"left":0.97041225,"top":0.06464485,"width":0.002493351,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026","depth":9,"bounds":{"left":0.97390294,"top":0.06464485,"width":0.009474734,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Calendar","depth":8,"bounds":{"left":0.9847075,"top":0.0650439,"width":0.0051529254,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Monitor","depth":9,"bounds":{"left":0.45262632,"top":0.096169196,"width":0.013464096,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
4863947415272186562
|
8632611152025234397
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone
Send message
Gemini is AI and can make mistakes, including about people.
Your privacy and Gemini Opens in a new window
Your privacy and Gemini
Opens in a new window
Summarize page
Summarize page
Screenpipe [archive.db · 2071.1MB]
Screenpipe
[archive.db · 2071.1MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
12
/
05
/
2026
Calendar
Monitor...
|
38747
|
NULL
|
NULL
|
NULL
|
|
38751
|
1439
|
48
|
2026-05-14T06:28:04.154418+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740084154_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.06304868,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"bounds":{"left":0.013297873,"top":0.09577015,"width":0.029587766,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"bounds":{"left":0.013297873,"top":0.12849163,"width":0.036901597,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.16121309,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.05651596,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.013297873,"top":0.19393456,"width":0.040724736,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.013297873,"top":0.22665602,"width":0.03756649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"bounds":{"left":0.013297873,"top":0.25937748,"width":0.012134309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"bounds":{"left":0.013297873,"top":0.29209897,"width":0.1100399,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"bounds":{"left":0.013297873,"top":0.32482043,"width":0.05668218,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.34796488,"width":0.06333112,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.29321808,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.30518618,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"bounds":{"left":0.3025266,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.07280585,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.08610372,"top":0.10454908,"width":0.028590426,"height":0.030327214},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"bounds":{"left":0.0887633,"top":0.10973663,"width":0.021941489,"height":0.020351157},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.2613032,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"bounds":{"left":0.27460107,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.28789893,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.068484046,"top":0.14764565,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.068484046,"top":0.15003991,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.02642952,"height":0.016360734},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.22041224,"height":0.057861134},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"bounds":{"left":0.18035239,"top":0.0,"width":0.015292553,"height":0.016360734},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.22174202,"height":0.057861134},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"bounds":{"left":0.075465426,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"bounds":{"left":0.08610372,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"bounds":{"left":0.09674202,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"bounds":{"left":0.107380316,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"bounds":{"left":0.11801862,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"bounds":{"left":0.12566489,"top":0.0905826,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"bounds":{"left":0.14029256,"top":0.0905826,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said yes I will do that. Is there a way to setup languages to transcription?","depth":21,"bounds":{"left":0.16023937,"top":0.100159615,"width":0.15026596,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"bounds":{"left":0.068484046,"top":0.1009577,"width":0.019946808,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes I will do that. Is there a way to setup languages to transcription?","depth":23,"bounds":{"left":0.16023937,"top":0.10175578,"width":0.12849069,"height":0.035514764},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"bounds":{"left":0.3025266,"top":0.17039107,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"bounds":{"left":0.09208777,"top":0.17278531,"width":0.030917553,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"bounds":{"left":0.08976064,"top":0.21428572,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"bounds":{"left":0.08976064,"top":0.21628092,"width":0.04105718,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.","depth":27,"bounds":{"left":0.0787899,"top":0.21747805,"width":0.23088431,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As for setting up languages for transcription,","depth":27,"bounds":{"left":0.0787899,"top":0.28850758,"width":0.10920878,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes, you can configure it","depth":27,"bounds":{"left":0.18799867,"top":0.28850758,"width":0.06333112,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", but it helps to understand how ScreenPipe handles language natively first.","depth":27,"bounds":{"left":0.0787899,"top":0.28850758,"width":0.20994017,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Transcription Engine Handles Language","depth":26,"bounds":{"left":0.0787899,"top":0.3499601,"width":0.234375,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Transcription Engine Handles Language","depth":27,"bounds":{"left":0.0787899,"top":0.35155627,"width":0.12549867,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses a","depth":27,"bounds":{"left":0.0787899,"top":0.37789306,"width":0.072972074,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"multilingual Whisper model","depth":27,"bounds":{"left":0.15176196,"top":0.37789306,"width":0.07047872,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and sets the language configuration to","depth":27,"bounds":{"left":0.0787899,"top":0.37789306,"width":0.23321144,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-Detect","depth":27,"bounds":{"left":0.08510638,"top":0.39864326,"width":0.032247342,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"bounds":{"left":0.11735372,"top":0.39864326,"width":0.0013297872,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.","depth":27,"bounds":{"left":0.0787899,"top":0.42817238,"width":0.23038563,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Advantage:","depth":29,"bounds":{"left":0.09142287,"top":0.47845173,"width":0.040724736,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.","depth":29,"bounds":{"left":0.09142287,"top":0.47845173,"width":0.22174202,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Drawback:","depth":29,"bounds":{"left":0.09142287,"top":0.5494813,"width":0.038896278,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.","depth":29,"bounds":{"left":0.09142287,"top":0.5494813,"width":0.20744681,"height":0.09936153},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How to Force a Specific Language","depth":26,"bounds":{"left":0.0787899,"top":0.67318434,"width":0.234375,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How to Force a Specific Language","depth":27,"bounds":{"left":0.0787899,"top":0.67478055,"width":0.08759973,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.","depth":27,"bounds":{"left":0.0787899,"top":0.70111734,"width":0.2278923,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are using the Desktop App UI:","depth":27,"bounds":{"left":0.0787899,"top":0.7721468,"width":0.09275266,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open the ScreenPipe settings.","depth":29,"bounds":{"left":0.09142287,"top":0.801676,"width":0.07347074,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Navigate to the","depth":29,"bounds":{"left":0.09142287,"top":0.8312051,"width":0.038231384,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio","depth":29,"bounds":{"left":0.12965426,"top":0.8312051,"width":0.014960106,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"bounds":{"left":0.14461437,"top":0.8312051,"width":0.0078125,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI/Transcription","depth":29,"bounds":{"left":0.15242687,"top":0.8312051,"width":0.041888297,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"section.","depth":29,"bounds":{"left":0.19431517,"top":0.8312051,"width":0.02044548,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Look for the","depth":29,"bounds":{"left":0.09142287,"top":0.8607342,"width":0.030585106,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper Language","depth":29,"bounds":{"left":0.12200798,"top":0.8607342,"width":0.04837101,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"bounds":{"left":0.17037898,"top":0.8607342,"width":0.0078125,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Transcription Language","depth":29,"bounds":{"left":0.17819148,"top":0.8607342,"width":0.061502658,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dropdown.","depth":29,"bounds":{"left":0.23969415,"top":0.8607342,"width":0.027260639,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Change it from \"Auto\" to your specific language (e.g., English, Bulgarian, or Slovak).","depth":29,"bounds":{"left":0.09142287,"top":0.8902634,"width":0.20079787,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are running ScreenPipe via CLI/Config:","depth":27,"bounds":{"left":0.0787899,"top":0.92378294,"width":0.116023935,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can modify your underlying configuration (usually found in","depth":27,"bounds":{"left":0.0787899,"top":0.9445331,"width":0.15159574,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/pipe.json","depth":28,"bounds":{"left":0.23238032,"top":0.94573027,"width":0.064328454,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:","depth":27,"bounds":{"left":0.0787899,"top":0.9445331,"width":0.234375,"height":0.05546689},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Slovak)","depth":29,"bounds":{"left":0.14012633,"top":1.0,"width":0.020777926,"height":-0.015562654},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Bulgarian)","depth":29,"bounds":{"left":0.14012633,"top":1.0,"width":0.027925532,"height":-0.04509175},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(English)","depth":29,"bounds":{"left":0.14012633,"top":1.0,"width":0.02244016,"height":-0.07462096},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Redo","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share and export","depth":22,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":22,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
3935038536316135224
|
8632611152042027997
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38750
|
1437
|
37
|
2026-05-14T06:28:04.198625+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740084198_m1.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone
Send message
Gemini is AI and can make mistakes, including about people.
Your privacy and Gemini Opens in a new window
Your privacy and Gemini
Opens in a new window
Summarize page
Summarize page
Screenpipe [archive.db · 2071.1MB]
Screenpipe
[archive.db · 2071.1MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
12
/
05
/
2026
Calendar
Monitor
Jump to
--...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said yes I will do that. Is there a way to setup languages to transcription?","depth":21,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes I will do that. Is there a way to setup languages to transcription?","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As for setting up languages for transcription,","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes, you can configure it","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", but it helps to understand how ScreenPipe handles language natively first.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Transcription Engine Handles Language","depth":26,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Transcription Engine Handles Language","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses a","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"multilingual Whisper model","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and sets the language configuration to","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-Detect","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Advantage:","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Drawback:","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How to Force a Specific Language","depth":26,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How to Force a Specific Language","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are using the Desktop App UI:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open the ScreenPipe settings.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Navigate to the","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI/Transcription","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"section.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Look for the","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper Language","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Transcription Language","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dropdown.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Change it from \"Auto\" to your specific language (e.g., English, Bulgarian, or Slovak).","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are running ScreenPipe via CLI/Config:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can modify your underlying configuration (usually found in","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/pipe.json","depth":28,"bounds":{"left":0.0,"top":0.0,"width":0.134375,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Slovak)","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Bulgarian)","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(English)","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Redo","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share and export","depth":22,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":22,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextArea","text":"Ask Gemini","depth":20,"on_screen":true,"value":"Ask Gemini","help_text":"","role_description":"text entry area","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Gemini","depth":21,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open upload file menu","depth":20,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tools","depth":18,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open mode picker","depth":20,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pro","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Microphone","depth":19,"on_screen":true,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Send message","depth":19,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini is AI and can make mistakes, including about people.","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your privacy and Gemini Opens in a new window","depth":17,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your privacy and Gemini","depth":18,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Opens in a new window","depth":19,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Summarize page","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summarize page","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Screenpipe [archive.db · 2071.1MB]","depth":7,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[archive.db · 2071.1MB]","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Activity","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Audio","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Work Report","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Timetable","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Summary","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Date","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"05","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Calendar","depth":8,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Monitor","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jump to","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-3284119262107119362
|
8632611152025234397
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone
Send message
Gemini is AI and can make mistakes, including about people.
Your privacy and Gemini Opens in a new window
Your privacy and Gemini
Opens in a new window
Summarize page
Summarize page
Screenpipe [archive.db · 2071.1MB]
Screenpipe
[archive.db · 2071.1MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
12
/
05
/
2026
Calendar
Monitor
Jump to
--...
|
38748
|
NULL
|
NULL
|
NULL
|
|
38753
|
1439
|
49
|
2026-05-14T06:28:05.140266+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740085140_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.06304868,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"bounds":{"left":0.013297873,"top":0.09577015,"width":0.029587766,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"bounds":{"left":0.013297873,"top":0.12849163,"width":0.036901597,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.16121309,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.05651596,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.013297873,"top":0.19393456,"width":0.040724736,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.013297873,"top":0.22665602,"width":0.03756649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"bounds":{"left":0.013297873,"top":0.25937748,"width":0.012134309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"bounds":{"left":0.013297873,"top":0.29209897,"width":0.1100399,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"bounds":{"left":0.013297873,"top":0.32482043,"width":0.05668218,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.34796488,"width":0.06333112,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.29321808,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.30518618,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"bounds":{"left":0.3025266,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.07280585,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.08610372,"top":0.10454908,"width":0.028590426,"height":0.030327214},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"bounds":{"left":0.0887633,"top":0.10973663,"width":0.021941489,"height":0.020351157},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.2613032,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"bounds":{"left":0.27460107,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.28789893,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.068484046,"top":0.14764565,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.068484046,"top":0.15003991,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.02642952,"height":0.016360734},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.22041224,"height":0.057861134},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"bounds":{"left":0.18035239,"top":0.0,"width":0.015292553,"height":0.016360734},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.22174202,"height":0.057861134},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"bounds":{"left":0.075465426,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"bounds":{"left":0.08610372,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"bounds":{"left":0.09674202,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"bounds":{"left":0.107380316,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"bounds":{"left":0.11801862,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"bounds":{"left":0.12566489,"top":0.0905826,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"bounds":{"left":0.14029256,"top":0.0905826,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said yes I will do that. Is there a way to setup languages to transcription?","depth":21,"bounds":{"left":0.16023937,"top":0.100159615,"width":0.15026596,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"bounds":{"left":0.068484046,"top":0.1009577,"width":0.019946808,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes I will do that. Is there a way to setup languages to transcription?","depth":23,"bounds":{"left":0.16023937,"top":0.10175578,"width":0.12849069,"height":0.035514764},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"bounds":{"left":0.3025266,"top":0.17039107,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"bounds":{"left":0.09208777,"top":0.17278531,"width":0.030917553,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"bounds":{"left":0.08976064,"top":0.21428572,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"bounds":{"left":0.08976064,"top":0.21628092,"width":0.04105718,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.","depth":27,"bounds":{"left":0.0787899,"top":0.21747805,"width":0.23088431,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As for setting up languages for transcription,","depth":27,"bounds":{"left":0.0787899,"top":0.28850758,"width":0.10920878,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes, you can configure it","depth":27,"bounds":{"left":0.18799867,"top":0.28850758,"width":0.06333112,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", but it helps to understand how ScreenPipe handles language natively first.","depth":27,"bounds":{"left":0.0787899,"top":0.28850758,"width":0.20994017,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Transcription Engine Handles Language","depth":26,"bounds":{"left":0.0787899,"top":0.3499601,"width":0.234375,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Transcription Engine Handles Language","depth":27,"bounds":{"left":0.0787899,"top":0.35155627,"width":0.12549867,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses a","depth":27,"bounds":{"left":0.0787899,"top":0.37789306,"width":0.072972074,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"multilingual Whisper model","depth":27,"bounds":{"left":0.15176196,"top":0.37789306,"width":0.07047872,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and sets the language configuration to","depth":27,"bounds":{"left":0.0787899,"top":0.37789306,"width":0.23321144,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-Detect","depth":27,"bounds":{"left":0.08510638,"top":0.39864326,"width":0.032247342,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"bounds":{"left":0.11735372,"top":0.39864326,"width":0.0013297872,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.","depth":27,"bounds":{"left":0.0787899,"top":0.42817238,"width":0.23038563,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Advantage:","depth":29,"bounds":{"left":0.09142287,"top":0.47845173,"width":0.040724736,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.","depth":29,"bounds":{"left":0.09142287,"top":0.47845173,"width":0.22174202,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Drawback:","depth":29,"bounds":{"left":0.09142287,"top":0.5494813,"width":0.038896278,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.","depth":29,"bounds":{"left":0.09142287,"top":0.5494813,"width":0.20744681,"height":0.09936153},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How to Force a Specific Language","depth":26,"bounds":{"left":0.0787899,"top":0.67318434,"width":0.234375,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How to Force a Specific Language","depth":27,"bounds":{"left":0.0787899,"top":0.67478055,"width":0.08759973,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.","depth":27,"bounds":{"left":0.0787899,"top":0.70111734,"width":0.2278923,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are using the Desktop App UI:","depth":27,"bounds":{"left":0.0787899,"top":0.7721468,"width":0.09275266,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open the ScreenPipe settings.","depth":29,"bounds":{"left":0.09142287,"top":0.801676,"width":0.07347074,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Navigate to the","depth":29,"bounds":{"left":0.09142287,"top":0.8312051,"width":0.038231384,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio","depth":29,"bounds":{"left":0.12965426,"top":0.8312051,"width":0.014960106,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"bounds":{"left":0.14461437,"top":0.8312051,"width":0.0078125,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI/Transcription","depth":29,"bounds":{"left":0.15242687,"top":0.8312051,"width":0.041888297,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"section.","depth":29,"bounds":{"left":0.19431517,"top":0.8312051,"width":0.02044548,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Look for the","depth":29,"bounds":{"left":0.09142287,"top":0.8607342,"width":0.030585106,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper Language","depth":29,"bounds":{"left":0.12200798,"top":0.8607342,"width":0.04837101,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"bounds":{"left":0.17037898,"top":0.8607342,"width":0.0078125,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Transcription Language","depth":29,"bounds":{"left":0.17819148,"top":0.8607342,"width":0.061502658,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dropdown.","depth":29,"bounds":{"left":0.23969415,"top":0.8607342,"width":0.027260639,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Change it from \"Auto\" to your specific language (e.g., English, Bulgarian, or Slovak).","depth":29,"bounds":{"left":0.09142287,"top":0.8902634,"width":0.20079787,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are running ScreenPipe via CLI/Config:","depth":27,"bounds":{"left":0.0787899,"top":0.92378294,"width":0.116023935,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can modify your underlying configuration (usually found in","depth":27,"bounds":{"left":0.0787899,"top":0.9445331,"width":0.15159574,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/pipe.json","depth":28,"bounds":{"left":0.23238032,"top":0.94573027,"width":0.064328454,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:","depth":27,"bounds":{"left":0.0787899,"top":0.9445331,"width":0.234375,"height":0.05546689},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Slovak)","depth":29,"bounds":{"left":0.14012633,"top":1.0,"width":0.020777926,"height":-0.015562654},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Bulgarian)","depth":29,"bounds":{"left":0.14012633,"top":1.0,"width":0.027925532,"height":-0.04509175},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(English)","depth":29,"bounds":{"left":0.14012633,"top":1.0,"width":0.02244016,"height":-0.07462096},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Redo","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share and export","depth":22,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":22,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextArea","text":"Ask Gemini","depth":20,"bounds":{"left":0.08211436,"top":0.83439744,"width":0.22573139,"height":0.01915403},"on_screen":true,"value":"Ask Gemini","help_text":"","role_description":"text entry area","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Gemini","depth":21,"bounds":{"left":0.08211436,"top":0.8347965,"width":0.030086435,"height":0.018355945},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-2869540658439782827
|
8632611149894544349
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini...
|
38751
|
NULL
|
NULL
|
NULL
|
|
38752
|
1437
|
38
|
2026-05-14T06:28:05.165723+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740085165_m1.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone
Send message
Gemini is AI and can make mistakes, including about people.
Your privacy and Gemini Opens in a new window
Your privacy and Gemini
Opens in a new window
Summarize page
Summarize page
Screenpipe [archive.db · 2071.1MB]
Screenpipe
[archive.db · 2071.1MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said yes I will do that. Is there a way to setup languages to transcription?","depth":21,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes I will do that. Is there a way to setup languages to transcription?","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As for setting up languages for transcription,","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes, you can configure it","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", but it helps to understand how ScreenPipe handles language natively first.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Transcription Engine Handles Language","depth":26,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Transcription Engine Handles Language","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses a","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"multilingual Whisper model","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and sets the language configuration to","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-Detect","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Advantage:","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Drawback:","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How to Force a Specific Language","depth":26,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How to Force a Specific Language","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are using the Desktop App UI:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open the ScreenPipe settings.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Navigate to the","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI/Transcription","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"section.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Look for the","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper Language","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Transcription Language","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dropdown.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Change it from \"Auto\" to your specific language (e.g., English, Bulgarian, or Slovak).","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are running ScreenPipe via CLI/Config:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can modify your underlying configuration (usually found in","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/pipe.json","depth":28,"bounds":{"left":0.0,"top":0.0,"width":0.134375,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Slovak)","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Bulgarian)","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(English)","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Redo","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share and export","depth":22,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":22,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextArea","text":"Ask Gemini","depth":20,"on_screen":true,"value":"Ask Gemini","help_text":"","role_description":"text entry area","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Gemini","depth":21,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open upload file menu","depth":20,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tools","depth":18,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open mode picker","depth":20,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pro","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Microphone","depth":19,"on_screen":true,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Send message","depth":19,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini is AI and can make mistakes, including about people.","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your privacy and Gemini Opens in a new window","depth":17,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your privacy and Gemini","depth":18,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Opens in a new window","depth":19,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Summarize page","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summarize page","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Screenpipe [archive.db · 2071.1MB]","depth":7,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[archive.db · 2071.1MB]","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Activity","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Audio","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Work Report","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Timetable","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Summary","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-2527110329049053212
|
8632612251536862173
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone
Send message
Gemini is AI and can make mistakes, including about people.
Your privacy and Gemini Opens in a new window
Your privacy and Gemini
Opens in a new window
Summarize page
Summarize page
Screenpipe [archive.db · 2071.1MB]
Screenpipe
[archive.db · 2071.1MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38754
|
1437
|
39
|
2026-05-14T06:28:06.135352+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740086135_m1.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-6122458525774068188
|
9212447352970427287
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options...
|
38752
|
NULL
|
NULL
|
NULL
|
|
38755
|
1439
|
50
|
2026-05-14T06:28:06.135371+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740086135_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.06304868,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"bounds":{"left":0.013297873,"top":0.09577015,"width":0.029587766,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"bounds":{"left":0.013297873,"top":0.12849163,"width":0.036901597,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.16121309,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.05651596,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.013297873,"top":0.19393456,"width":0.040724736,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.013297873,"top":0.22665602,"width":0.03756649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"bounds":{"left":0.013297873,"top":0.25937748,"width":0.012134309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"bounds":{"left":0.013297873,"top":0.29209897,"width":0.1100399,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"bounds":{"left":0.013297873,"top":0.32482043,"width":0.05668218,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.34796488,"width":0.06333112,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.29321808,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.30518618,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"bounds":{"left":0.3025266,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.07280585,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.08610372,"top":0.10454908,"width":0.028590426,"height":0.030327214},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"bounds":{"left":0.0887633,"top":0.10973663,"width":0.021941489,"height":0.020351157},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.2613032,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"bounds":{"left":0.27460107,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.28789893,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.068484046,"top":0.14764565,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.068484046,"top":0.15003991,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-3552479194466422982
|
9212447352970443671
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38756
|
1439
|
51
|
2026-05-14T06:28:06.947673+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740086947_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Previous month
May 2026
Next month
Mon
Tue
Wed
Thu Previous month
May 2026
Next month
Mon
Tue
Wed
Thu
Fri
Sat
Sun
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
Mon
27
4
11
18
25
1
Tue
28
5
12
19
26
2
Wed
29
6
13
20
27
3
Thu
30
7
14
21
28
4
Fri
1
8
15
22
29
5
Sat
2
9
16
23
30
6
Sun
3
10
17
24
31
7
Clear
Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown....
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Previous month","depth":9,"bounds":{"left":0.90924203,"top":0.096568234,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"May 2026","depth":10,"bounds":{"left":0.9310173,"top":0.096568234,"width":0.03357713,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next month","depth":9,"bounds":{"left":0.97839093,"top":0.096568234,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Mon","depth":11,"bounds":{"left":0.9109042,"top":0.12809257,"width":0.0076462766,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tue","depth":11,"bounds":{"left":0.9225399,"top":0.12809257,"width":0.0063164895,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Wed","depth":11,"bounds":{"left":0.9328458,"top":0.12809257,"width":0.0078125,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Thu","depth":11,"bounds":{"left":0.9444814,"top":0.12809257,"width":0.0066489363,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fri","depth":11,"bounds":{"left":0.9566157,"top":0.12809257,"width":0.004488032,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sat","depth":11,"bounds":{"left":0.96692157,"top":0.12809257,"width":0.005817819,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sun","depth":11,"bounds":{"left":0.97755986,"top":0.12809257,"width":0.0066489363,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"27","depth":12,"bounds":{"left":0.9125665,"top":0.15043895,"width":0.0043218085,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"28","depth":12,"bounds":{"left":0.92353725,"top":0.15043895,"width":0.004488032,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"29","depth":12,"bounds":{"left":0.93450797,"top":0.15043895,"width":0.004488032,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30","depth":12,"bounds":{"left":0.94547874,"top":0.15043895,"width":0.004654255,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":12,"bounds":{"left":0.95794547,"top":0.15043895,"width":0.0016622341,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":12,"bounds":{"left":0.96875,"top":0.15043895,"width":0.0021609042,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":12,"bounds":{"left":0.9797208,"top":0.15043895,"width":0.0023271276,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":12,"bounds":{"left":0.91356385,"top":0.17278531,"width":0.0023271276,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":12,"bounds":{"left":0.9247008,"top":0.17278531,"width":0.0021609042,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":12,"bounds":{"left":0.93567157,"top":0.17278531,"width":0.0023271276,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7","depth":12,"bounds":{"left":0.9468085,"top":0.17278531,"width":0.0019946808,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8","depth":12,"bounds":{"left":0.95761305,"top":0.17278531,"width":0.0023271276,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"9","depth":12,"bounds":{"left":0.96858376,"top":0.17278531,"width":0.002493351,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10","depth":12,"bounds":{"left":0.97888964,"top":0.17278531,"width":0.0039893617,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11","depth":12,"bounds":{"left":0.91306514,"top":0.19513169,"width":0.0033244682,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12","depth":12,"bounds":{"left":0.92386967,"top":0.19513169,"width":0.0038231383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13","depth":12,"bounds":{"left":0.93484044,"top":0.19513169,"width":0.0039893617,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14","depth":12,"bounds":{"left":0.94581115,"top":0.19513169,"width":0.0039893617,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15","depth":12,"bounds":{"left":0.9567819,"top":0.19513169,"width":0.0039893617,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16","depth":12,"bounds":{"left":0.96775264,"top":0.19513169,"width":0.004155585,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17","depth":12,"bounds":{"left":0.97888964,"top":0.19513169,"width":0.0038231383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18","depth":12,"bounds":{"left":0.9127327,"top":0.21747805,"width":0.0039893617,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19","depth":12,"bounds":{"left":0.92370343,"top":0.21747805,"width":0.004155585,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20","depth":12,"bounds":{"left":0.93450797,"top":0.21747805,"width":0.004488032,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21","depth":12,"bounds":{"left":0.94581115,"top":0.21747805,"width":0.0039893617,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"22","depth":12,"bounds":{"left":0.9566157,"top":0.21747805,"width":0.004488032,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"23","depth":12,"bounds":{"left":0.96758646,"top":0.21747805,"width":0.004488032,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"24","depth":12,"bounds":{"left":0.97855717,"top":0.21747805,"width":0.004654255,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"25","depth":12,"bounds":{"left":0.9125665,"top":0.23982441,"width":0.004488032,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"26","depth":12,"bounds":{"left":0.92353725,"top":0.23982441,"width":0.004488032,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"27","depth":12,"bounds":{"left":0.9346742,"top":0.23982441,"width":0.0043218085,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"28","depth":12,"bounds":{"left":0.94547874,"top":0.23982441,"width":0.004654255,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"29","depth":12,"bounds":{"left":0.9566157,"top":0.23982441,"width":0.004488032,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30","depth":12,"bounds":{"left":0.96758646,"top":0.23982441,"width":0.004654255,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31","depth":12,"bounds":{"left":0.97888964,"top":0.23982441,"width":0.0039893617,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":12,"bounds":{"left":0.91389626,"top":0.2621708,"width":0.0016622341,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":12,"bounds":{"left":0.9247008,"top":0.2621708,"width":0.0021609042,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":12,"bounds":{"left":0.93567157,"top":0.2621708,"width":0.0023271276,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":12,"bounds":{"left":0.9466423,"top":0.2621708,"width":0.0023271276,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":12,"bounds":{"left":0.95761305,"top":0.2621708,"width":0.0023271276,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":12,"bounds":{"left":0.96858376,"top":0.2621708,"width":0.002493351,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7","depth":12,"bounds":{"left":0.97988695,"top":0.2621708,"width":0.0019946808,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Mon","depth":11,"bounds":{"left":0.9109042,"top":0.12809257,"width":0.0076462766,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"27","depth":11,"bounds":{"left":0.9125665,"top":0.15043895,"width":0.0043218085,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":11,"bounds":{"left":0.91356385,"top":0.17278531,"width":0.0023271276,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11","depth":11,"bounds":{"left":0.91306514,"top":0.19513169,"width":0.0033244682,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18","depth":11,"bounds":{"left":0.9127327,"top":0.21747805,"width":0.0039893617,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"25","depth":11,"bounds":{"left":0.9125665,"top":0.23982441,"width":0.004488032,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":11,"bounds":{"left":0.91389626,"top":0.2621708,"width":0.0016622341,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tue","depth":11,"bounds":{"left":0.9225399,"top":0.12809257,"width":0.0063164895,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"28","depth":11,"bounds":{"left":0.92353725,"top":0.15043895,"width":0.004488032,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":11,"bounds":{"left":0.9247008,"top":0.17278531,"width":0.0021609042,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12","depth":11,"bounds":{"left":0.92386967,"top":0.19513169,"width":0.0038231383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19","depth":11,"bounds":{"left":0.92370343,"top":0.21747805,"width":0.004155585,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"26","depth":11,"bounds":{"left":0.92353725,"top":0.23982441,"width":0.004488032,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":11,"bounds":{"left":0.9247008,"top":0.2621708,"width":0.0021609042,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Wed","depth":11,"bounds":{"left":0.9328458,"top":0.12809257,"width":0.0078125,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"29","depth":11,"bounds":{"left":0.93450797,"top":0.15043895,"width":0.004488032,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":11,"bounds":{"left":0.93567157,"top":0.17278531,"width":0.0023271276,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13","depth":11,"bounds":{"left":0.93484044,"top":0.19513169,"width":0.0039893617,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20","depth":11,"bounds":{"left":0.93450797,"top":0.21747805,"width":0.004488032,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"27","depth":11,"bounds":{"left":0.9346742,"top":0.23982441,"width":0.0043218085,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":11,"bounds":{"left":0.93567157,"top":0.2621708,"width":0.0023271276,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Thu","depth":11,"bounds":{"left":0.9444814,"top":0.12809257,"width":0.0066489363,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30","depth":11,"bounds":{"left":0.94547874,"top":0.15043895,"width":0.004654255,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7","depth":11,"bounds":{"left":0.9468085,"top":0.17278531,"width":0.0019946808,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14","depth":11,"bounds":{"left":0.94581115,"top":0.19513169,"width":0.0039893617,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21","depth":11,"bounds":{"left":0.94581115,"top":0.21747805,"width":0.0039893617,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"28","depth":11,"bounds":{"left":0.94547874,"top":0.23982441,"width":0.004654255,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":11,"bounds":{"left":0.9466423,"top":0.2621708,"width":0.0023271276,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fri","depth":11,"bounds":{"left":0.9566157,"top":0.12809257,"width":0.004488032,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":11,"bounds":{"left":0.95794547,"top":0.15043895,"width":0.0016622341,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8","depth":11,"bounds":{"left":0.95761305,"top":0.17278531,"width":0.0023271276,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15","depth":11,"bounds":{"left":0.9567819,"top":0.19513169,"width":0.0039893617,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"22","depth":11,"bounds":{"left":0.9566157,"top":0.21747805,"width":0.004488032,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"29","depth":11,"bounds":{"left":0.9566157,"top":0.23982441,"width":0.004488032,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":11,"bounds":{"left":0.95761305,"top":0.2621708,"width":0.0023271276,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sat","depth":11,"bounds":{"left":0.96692157,"top":0.12809257,"width":0.005817819,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":11,"bounds":{"left":0.96875,"top":0.15043895,"width":0.0021609042,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"9","depth":11,"bounds":{"left":0.96858376,"top":0.17278531,"width":0.002493351,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16","depth":11,"bounds":{"left":0.96775264,"top":0.19513169,"width":0.004155585,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"23","depth":11,"bounds":{"left":0.96758646,"top":0.21747805,"width":0.004488032,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30","depth":11,"bounds":{"left":0.96758646,"top":0.23982441,"width":0.004654255,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":11,"bounds":{"left":0.96858376,"top":0.2621708,"width":0.002493351,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sun","depth":11,"bounds":{"left":0.97755986,"top":0.12809257,"width":0.0066489363,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":11,"bounds":{"left":0.9797208,"top":0.15043895,"width":0.0023271276,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10","depth":11,"bounds":{"left":0.97888964,"top":0.17278531,"width":0.0039893617,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17","depth":11,"bounds":{"left":0.97888964,"top":0.19513169,"width":0.0038231383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"24","depth":11,"bounds":{"left":0.97855717,"top":0.21747805,"width":0.004654255,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31","depth":11,"bounds":{"left":0.97888964,"top":0.23982441,"width":0.0039893617,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7","depth":11,"bounds":{"left":0.97988695,"top":0.2621708,"width":0.0019946808,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Clear","depth":8,"bounds":{"left":0.90924203,"top":0.2849162,"width":0.019115692,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.06304868,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"bounds":{"left":0.013297873,"top":0.09577015,"width":0.029587766,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"bounds":{"left":0.013297873,"top":0.12849163,"width":0.036901597,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.16121309,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.05651596,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.013297873,"top":0.19393456,"width":0.040724736,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.013297873,"top":0.22665602,"width":0.03756649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"bounds":{"left":0.013297873,"top":0.25937748,"width":0.012134309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"bounds":{"left":0.013297873,"top":0.29209897,"width":0.1100399,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"bounds":{"left":0.013297873,"top":0.32482043,"width":0.05668218,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.34796488,"width":0.06333112,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.29321808,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.30518618,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"bounds":{"left":0.3025266,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.07280585,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.08610372,"top":0.10454908,"width":0.028590426,"height":0.030327214},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"bounds":{"left":0.0887633,"top":0.10973663,"width":0.021941489,"height":0.020351157},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.2613032,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"bounds":{"left":0.27460107,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.28789893,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.068484046,"top":0.14764565,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.068484046,"top":0.15003991,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.02642952,"height":0.016360734},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.22041224,"height":0.057861134},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"bounds":{"left":0.18035239,"top":0.0,"width":0.015292553,"height":0.016360734},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.22174202,"height":0.057861134},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"bounds":{"left":0.075465426,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"bounds":{"left":0.08610372,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"bounds":{"left":0.09674202,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"bounds":{"left":0.107380316,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"bounds":{"left":0.11801862,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"bounds":{"left":0.12566489,"top":0.0905826,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"bounds":{"left":0.14029256,"top":0.0905826,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said yes I will do that. Is there a way to setup languages to transcription?","depth":21,"bounds":{"left":0.16023937,"top":0.100159615,"width":0.15026596,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"bounds":{"left":0.068484046,"top":0.1009577,"width":0.019946808,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes I will do that. Is there a way to setup languages to transcription?","depth":23,"bounds":{"left":0.16023937,"top":0.10175578,"width":0.12849069,"height":0.035514764},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"bounds":{"left":0.3025266,"top":0.17039107,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"bounds":{"left":0.09208777,"top":0.17278531,"width":0.030917553,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"bounds":{"left":0.08976064,"top":0.21428572,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"bounds":{"left":0.08976064,"top":0.21628092,"width":0.04105718,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.","depth":27,"bounds":{"left":0.0787899,"top":0.21747805,"width":0.23088431,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As for setting up languages for transcription,","depth":27,"bounds":{"left":0.0787899,"top":0.28850758,"width":0.10920878,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes, you can configure it","depth":27,"bounds":{"left":0.18799867,"top":0.28850758,"width":0.06333112,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", but it helps to understand how ScreenPipe handles language natively first.","depth":27,"bounds":{"left":0.0787899,"top":0.28850758,"width":0.20994017,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Transcription Engine Handles Language","depth":26,"bounds":{"left":0.0787899,"top":0.3499601,"width":0.234375,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Transcription Engine Handles Language","depth":27,"bounds":{"left":0.0787899,"top":0.35155627,"width":0.12549867,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses a","depth":27,"bounds":{"left":0.0787899,"top":0.37789306,"width":0.072972074,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"multilingual Whisper model","depth":27,"bounds":{"left":0.15176196,"top":0.37789306,"width":0.07047872,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and sets the language configuration to","depth":27,"bounds":{"left":0.0787899,"top":0.37789306,"width":0.23321144,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-Detect","depth":27,"bounds":{"left":0.08510638,"top":0.39864326,"width":0.032247342,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"bounds":{"left":0.11735372,"top":0.39864326,"width":0.0013297872,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.","depth":27,"bounds":{"left":0.0787899,"top":0.42817238,"width":0.23038563,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Advantage:","depth":29,"bounds":{"left":0.09142287,"top":0.47845173,"width":0.040724736,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.","depth":29,"bounds":{"left":0.09142287,"top":0.47845173,"width":0.22174202,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Drawback:","depth":29,"bounds":{"left":0.09142287,"top":0.5494813,"width":0.038896278,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.","depth":29,"bounds":{"left":0.09142287,"top":0.5494813,"width":0.20744681,"height":0.09936153},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How to Force a Specific Language","depth":26,"bounds":{"left":0.0787899,"top":0.67318434,"width":0.234375,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How to Force a Specific Language","depth":27,"bounds":{"left":0.0787899,"top":0.67478055,"width":0.08759973,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.","depth":27,"bounds":{"left":0.0787899,"top":0.70111734,"width":0.2278923,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are using the Desktop App UI:","depth":27,"bounds":{"left":0.0787899,"top":0.7721468,"width":0.09275266,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open the ScreenPipe settings.","depth":29,"bounds":{"left":0.09142287,"top":0.801676,"width":0.07347074,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Navigate to the","depth":29,"bounds":{"left":0.09142287,"top":0.8312051,"width":0.038231384,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio","depth":29,"bounds":{"left":0.12965426,"top":0.8312051,"width":0.014960106,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"bounds":{"left":0.14461437,"top":0.8312051,"width":0.0078125,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI/Transcription","depth":29,"bounds":{"left":0.15242687,"top":0.8312051,"width":0.041888297,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"section.","depth":29,"bounds":{"left":0.19431517,"top":0.8312051,"width":0.02044548,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Look for the","depth":29,"bounds":{"left":0.09142287,"top":0.8607342,"width":0.030585106,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper Language","depth":29,"bounds":{"left":0.12200798,"top":0.8607342,"width":0.04837101,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"bounds":{"left":0.17037898,"top":0.8607342,"width":0.0078125,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Transcription Language","depth":29,"bounds":{"left":0.17819148,"top":0.8607342,"width":0.061502658,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dropdown.","depth":29,"bounds":{"left":0.23969415,"top":0.8607342,"width":0.027260639,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
1200613604373291862
|
8487370064109648845
|
visual_change
|
accessibility
|
NULL
|
Previous month
May 2026
Next month
Mon
Tue
Wed
Thu Previous month
May 2026
Next month
Mon
Tue
Wed
Thu
Fri
Sat
Sun
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
Mon
27
4
11
18
25
1
Tue
28
5
12
19
26
2
Wed
29
6
13
20
27
3
Thu
30
7
14
21
28
4
Fri
1
8
15
22
29
5
Sat
2
9
16
23
30
6
Sun
3
10
17
24
31
7
Clear
Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown....
|
38755
|
NULL
|
NULL
|
NULL
|
|
38758
|
1439
|
52
|
2026-05-14T06:28:14.218175+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740094218_m2.jpg...
|
iTerm2
|
screenpipe"
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
ggml_metal_init: use concurrency = true
ggml_me ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.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-13T20:34:02.333860Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-13T20:35:59.996074Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.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-13T20:36:06.828724Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-13T20:36:08.344162Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for MacBook Pro Microphone (input)
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
2026-05-13T20:38:09.099371Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-13T20:38:37.344312Z 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=0 rows_returned=44 elapsed=5.107326084s
2026-05-13T20:38:37.346139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 44 eligible frames
2026-05-13T20:38:38.686723Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 5.1MB → 0.5MB (10.0x), 18 JPEGs deleted
2026-05-13T20:38:41.220417Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.4MB → 3.3MB (1.6x), 24 JPEGs deleted
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.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-13T20:40:11.364685Z 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 ~ $ alias sp-start
zsh: command not found: alias
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias sp-start
zsh: command not found: alias
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias
addssh='ssh-add ~/.ssh/*'
app='cd ~/jiminny/app'
cnt='docker exec -ti $(docker ps | grep worker | awk '\''{print $1}'\'') /bin/bash -c "cd /home/jiminny && bash"'
co='git checkout'
cov='./vendor/bin/phpunit tests/Unit --coverage-html=build/coverage'
csfix='make cs-fix'
dev='docker exec -ti $(docker ps -q --filter "name=docker_lamp_1") /bin/bash'
eu='ssh lukas@jiminny-eu-bastion -D [IP_ADDRESS]:7073 -L 7532:db:3306'
eues='ssh ubuntu@jiminny-eu-ecs1 -L 7960:vpc-activities7-e7pfbl7wojjjnvp7olfpudrgke.eu-west-1.es.amazonaws.com:80'
ext='nvm use 20 && cd ~/jiminny/extension-app && yarn build:dev && yarn preview'
fe='yarn && nvm use 24 && cd ~/jiminny/app/front-end && yarn build:watch'
fe3='cd ~/jiminny/app/front-end-vue3 && yarn build:watch:production'
gbr='git branch --sort=-committerdate'
gcb='git branch --show-current | pbcopy'
gs='git status'
hhh=history
hhs='history 0 | grep '
install_nano='apt-get update & apt-get install nano'
kar='cp -f ~/DEV/settings/goku-karabiner-settings/karabiner.edn ~/.config/karabiner.edn && goku'
ll='ls -la --color=tty'
lock='kill %1 2>/dev/null; sleep 1 && pmset displaysleepnow'
nas='ssh Adm1n@[IP_ADDRESS] -p22'
poetryshell='eval ""'
prod='ssh lukas@jiminny-prod-bastion -D [IP_ADDRESS]:7072 -L 7632:db:3306'
prodes='ssh ubuntu@jiminny-prod-ecs1 -L 7970:vpc-activities7-3o2zlrelmga5qicf2yxxwtx6bi.us-east-2.es.amazonaws.com:80'
prophet='cd ~/jiminny/app'
prophetdown='aws-vault exec staging -- bash -c "env | grep AWS_ > aws-creds.env && docker compose -f docker-compose.yml -f docker-compose.dev.yml down"'
prophetup='aws-vault exec staging -- bash -c "env | grep AWS_ > aws-creds.env && docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build"'
qa='ssh lukas@jiminny-qa-bastion -D [IP_ADDRESS]:7074 -L 7432:db:3306'
qaes='ssh ubuntu@jiminny-qa-ecs1 -L 7950:vpc-activities7-s5zchrs4xqcnav3rjzmxgxvfvq.us-east-2.es.amazonaws.com:80'
qai='ssh lukas@jiminny-qai-bastion -D [IP_ADDRESS]:7075 -L 7777:jiminny-db-qai.c3uemcm84st0.us-east-2.rds.amazonaws.com:3306'
rmbc='rm -rf bootstrap/cache/*.php'
run-help=man
sp-db='sqlite3 ~/.screenpipe/db.sqlite '
sp-start='npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"'
sp-status='curl -s [URL_WITH_CREDENTIALS] -D [IP_ADDRESS]:7071 -L 7732:db:3306'
stges='ssh ubuntu@jiminny-stage-ecs1 -L 7980:vpc-activities7-tgeodjeaugnaiigqgdcjjkrrj4.us-east-2.es.amazonaws.com:80'
veu='ssh jiminny-eu-ecs1'
veu10='ssh jiminny-eu-ecs10'
veu11='ssh jiminny-eu-ecs11'
veu12='ssh jiminny-eu-ecs12'
veu2='ssh jiminny-eu-ecs2'
veu3='ssh jiminny-eu-ecs3'
veu4='ssh jiminny-eu-ecs4'
veu5='ssh jiminny-eu-ecs5'
veu6='ssh jiminny-eu-ecs6'
veu7='ssh jiminny-eu-ecs7'
veu8='ssh jiminny-eu-ecs8'
veu9='ssh jiminny-eu-ecs9'
vprod='ssh jiminny-prod-ecs1'
vprod10='ssh jiminny-prod-ecs10'
vprod11='ssh jiminny-prod-ecs11'
vprod12='ssh jiminny-prod-ecs12'
vprod2='ssh jiminny-prod-ecs2'
vprod3='ssh jiminny-prod-ecs3'
vprod4='ssh jiminny-prod-ecs4'
vprod5='ssh jiminny-prod-ecs5'
vprod6='ssh jiminny-prod-ecs6'
vprod7='ssh jiminny-prod-ecs7'
vprod8='ssh jiminny-prod-ecs8'
vprod9='ssh jiminny-prod-ecs9'
vqa='ssh jiminny-qa-ecs1'
vqa2='ssh jiminny-qa-ecs2'
vqai='ssh jiminny-qai-ecs1'
vqai2='ssh jiminny-qai-ecs2'
vstage='ssh ec2-user@jiminny-subenv-worker-app0'
vstg='ssh jiminny-stage-ecs1'
vstg2='ssh ubuntu@jiminny-stage-ecs2'
which-command=whence
work='cd ~/jiminny/infrastructure/dev/docker && docker compose up'
workoff='kill %1'
workon='caffeinate -d & echo "Display sleep disabled (PID $!)"'
xd='make docker-xdebug-disable'
xe='make docker-xdebug-enable'
zp='nano ~/.zprofile'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-05-14T09:24:57.412901Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
microphone: ok
accessibility: ok
2026-05-14T09:24:57.504235Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-05-14T09:24:58.108327Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-05-14T09:24:58.110039Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-05-14T09:24:58.110396Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-05-14T09:24:58.131971Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-05-14T09:24:58.132049Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-05-14T09:24:58.543048Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-05-14T09:24:58.543106Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-05-14T09:24:58.542983Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-05-14T09:24:58.542992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-05-14T09:24:58.543188Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-05-14T09:24:58.545885Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-05-14T09:24:58.546638Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-05-14T09:24:58.546795Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-05-14T09:24:58.547356Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-05-14T09:24:58.547453Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-05-14T09:24:58.547767Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-05-14T09:24:58.547888Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
2026-05-14T09:24:58.550735Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
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 │ │
│ │ soundcore AeroClip (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-14T09:24:58.552083Z INFO screenpipe: starting UI event capture
2026-05-14T09:24:58.555587Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
2026-05-14T09:24:58.557961Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-05-14T09:24:58.568371Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-05-14T09:24:58.584826Z INFO screenpipe: text-PII worker skipped at startup — async_pii_redaction=false. OPF model (~2.8 GB) will NOT be downloaded or loaded. Toggle via Settings → Privacy → AI PII removal.
2026-05-14T09:24:58.584861Z INFO screenpipe: image-PII worker skipped at startup — async_image_pii_redaction=false. rfdetr_v9 model (~108 MB) will NOT be downloaded or loaded. Toggle via Settings → Privacy → AI PII removal.
2026-05-14T09:24:58.584915Z INFO screenpipe_engine::ui_recorder: UI recording session started: 25f92ee5-c210-4bb0-aa44-4054d2351b03
2026-05-14T09:24:58.584978Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-05-14T09:24:58.585134Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-05-13 06:24:58.585133 UTC to 2026-05-14 06:24:58.585133 UTC)
2026-05-14T09:24:58.585862Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-05-14T09:24:58.594987Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-05-14T09:24:58.599110Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-05-14T09:24:58.699260Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-05-14T09:24:58.699315Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-05-14T09:24:58.699350Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-05-14T09:24:58.746653Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (3008x1253)
2026-05-14T09:24:58.746781Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-05-14T09:24:58.746794Z INFO screenpipe_engine::vision_manager::manager: VisionManager started with 2/2 monitor(s)
2026-05-14T09:24:58.746801Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s backstop poll)
2026-05-14T09:24:58.746815Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-05-14T09:24:59.307089Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 0 excluded)
2026-05-14T09:24:59.416921Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 0 excluded)
2026-05-14T09:24:59.478046Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=38633, dur=113ms
2026-05-14T09:24:59.615567Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=38634, dur=139ms
2026-05-14T09:25:04.109913Z 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 frames f\n LEFT JOIN video_chunks vc ON f.video_chunk_id = vc.id\nWHERE\n f.timestamp >= ?1\n AND f.timestamp <= ?2\n AND COALESCE(vc.file_path, f.snapshot_path, '') NOT LIKE 'cloud://%'\nORDER BY\n f.timestamp DESC,\n f.offset_index DESC\nLIMIT\n 10000\n" rows_affected=0 rows_returned=9423 elapsed=5.524093667s
2026-05-14T09:25:04.143960Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 9423 frame entries, coverage from 2026-05-13 06:24:58.585133 UTC
2026-05-14T09:25:08.557254Z INFO screenpipe_audio::transcription::engine: whisper model available: "/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin"
2026-05-14T09:25:08.557399Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)
2026-05-14T09:25:08.557427Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...
whisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'
whisper_init_with_params_no_state: use gpu = 1
whisper_init_with_params_no_state: flash attn = 0
whisper_init_with_params_no_state: gpu_device = 0
whisper_init_with_params_no_state: dtw = 0
ggml_metal_device_init: tensor API disabled for pre-M5 and pre-A19 devices
ggml_metal_library_init: using embedded metal library
ggml_metal_library_init: loaded in 0.045 sec
ggml_metal_rsets_init: creating a residency set collection (keep_alive = 180 s)
ggml_metal_device_init: GPU name: Apple M1
ggml_metal_device_init: GPU family: MTLGPUFamilyApple7 (1007)
ggml_metal_device_init: GPU family: MTLGPUFamilyCommon3 (3003)
ggml_metal_device_init: GPU family: MTLGPUFamilyMetal3 (5001)
ggml_metal_device_init: simdgroup reduction = true
ggml_metal_device_init: simdgroup matrix mul. = true
ggml_metal_device_init: has unified memory = true
ggml_metal_device_init: has bfloat = true
ggml_metal_device_init: has tensor = false
ggml_metal_device_init: use residency sets = true
ggml_metal_device_init: use shared buffers = true
ggml_metal_device_init: recommendedMaxWorkingSetSize = 11453.25 MB
whisper_init_with_params_no_state: devices = 3
whisper_init_with_params_no_state: backends = 3
whisper_model_load: loading model
whisper_model_load: n_vocab = 51865
whisper_model_load: n_audio_ctx = 1500
whisper_model_load: n_audio_state = 384
whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-05-14T09:25:08.714171Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"ggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:34:02.333860Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:35:59.996074Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:36:06.828724Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:36:08.344162Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for MacBook Pro Microphone (input)\n\n tip: sign in for higher AI quotas + cloud sync:\n screenpipe login\n\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:38:09.099371Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:38:37.344312Z 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=0 rows_returned=44 elapsed=5.107326084s\n2026-05-13T20:38:37.346139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 44 eligible frames\n2026-05-13T20:38:38.686723Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 5.1MB → 0.5MB (10.0x), 18 JPEGs deleted\n2026-05-13T20:38:41.220417Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.4MB → 3.3MB (1.6x), 24 JPEGs deleted\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:40:11.364685Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n\n tip: get the screenpipe desktop app for the full experience\n https://screenpi.pe\n\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:42:13.293671Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:43:42.753501Z 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=0 rows_returned=22 elapsed=1.527175333s\n2026-05-13T20:43:42.753626Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 22 eligible frames\n2026-05-13T20:43:43.862384Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.8MB → 0.5MB (5.8x), 10 JPEGs deleted\n2026-05-13T20:43:44.995456Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.0MB → 0.3MB (5.9x), 10 JPEGs deleted\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:44:15.490296Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:46:17.561354Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n\n tip: wire screenpipe into claude with one command:\n claude mcp add screenpipe -- npx -y screenpipe-mcp\n then ask claude to build a pipe that tracks who you are, your todos, and how you spend your time from your screen activity\n\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:48:19.446216Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:48:47.503128Z 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=0 rows_returned=11 elapsed=2.495709958s\n2026-05-13T20:48:47.503288Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 11 eligible frames\n2026-05-13T20:48:48.316165Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 1.4MB → 0.5MB (2.9x), 5 JPEGs deleted\n2026-05-13T20:48:48.942276Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 4 frames, 0.8MB → 0.3MB (2.4x), 4 JPEGs deleted\n2026-05-13T20:49:42.528723Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)\n2026-05-13T20:49:43.434142Z 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)\n2026-05-13T20:49:43.440276Z 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)\n2026-05-13T20:49:44.371959Z INFO screenpipe_engine::event_driven_capture: invalidating persistent streams after unlock/wake for monitor 1\n2026-05-13T20:49:44.767833Z WARN screenpipe_audio::audio_manager::device_monitor: [DEVICE_RECOVERY] detected stale recording handle for MacBook Pro Microphone (input), cleaning up for restart\n2026-05-13T20:49:44.767967Z INFO screenpipe_audio::device::device_manager: Stopping device: MacBook Pro Microphone (input)\n2026-05-13T20:49:44.785602Z INFO sck_rs::stream_manager: stopped 2 persistent stream(s)\n2026-05-13T20:49:45.364548Z INFO screenpipe_audio::device::device_manager: starting recording for device: MacBook Pro Microphone (input)\n2026-05-13T20:49:45.364628Z INFO screenpipe_audio::audio_manager::device_monitor: restarted with system default device: MacBook Pro Microphone (input)\n2026-05-13T20:49:45.364676Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for MacBook Pro Microphone (input) (wired / 30s segments)\n2026-05-13T20:49:46.278662Z WARN sqlx::query: summary=\"INSERT INTO frames ( …\" db.statement=\"\\n\\nINSERT INTO\\n frames (\\n video_chunk_id,\\n offset_index,\\n timestamp,\\n name,\\n browser_url,\\n app_name,\\n window_name,\\n focused,\\n device_name,\\n snapshot_path,\\n capture_trigger,\\n accessibility_text,\\n text_source,\\n accessibility_tree_json,\\n content_hash,\\n simhash,\\n full_text,\\n elements_ref_frame_id,\\n document_path\\n )\\nVALUES\\n (\\n NULL,\\n 0,\\n ?1,\\n ?2,\\n ?3,\\n ?4,\\n ?5,\\n ?6,\\n ?7,\\n ?8,\\n ?9,\\n ?10,\\n ?11,\\n ?12,\\n ?13,\\n ?14,\\n ?15,\\n ?16,\\n ?17\\n )\\n\" rows_affected=1 rows_returned=0 elapsed=1.244703625s\n2026-05-13T20:49:46.796019Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 0 excluded)\n2026-05-13T20:49:47.183906Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 0 excluded)\n2026-05-13T20:49:48.460135Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 96.4ms elapsed (expected 5.3ms) → inserting 91.1ms silence (8742 samples)\n2026-05-13T20:49:49.414321Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 115.3ms elapsed (expected 5.3ms) → inserting 109.9ms silence (10554 samples)\n2026-05-13T20:49:50.138185Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 123.4ms elapsed (expected 5.3ms) → inserting 118.1ms silence (11335 samples)\n2026-05-13T20:49:50.422739Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 82.2ms elapsed (expected 5.3ms) → inserting 76.9ms silence (7383 samples)\n2026-05-13T20:49:50.671835Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 249.1ms elapsed (expected 5.3ms) → inserting 243.8ms silence (23401 samples)\n2026-05-13T20:49:57.489211Z 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=430 elapsed=14.406079875s\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-05-13T20:50:25.337392Z 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=430 elapsed=1.06712725s\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:50:34.187500Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:50:40.135101Z 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=430 elapsed=1.170097666s\n\n tip: install a starter bundle of pipes:\n screenpipe install https://screenpi.pe/start.json\n\n2026-05-13T20:51:47.151342Z 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=432 elapsed=1.377976291s\nzsh: terminated npx screenpipe@latest record\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias sp-start\nzsh: command not found: alias\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias sp-start\nzsh: command not found: alias\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias\naddssh='ssh-add ~/.ssh/*'\napp='cd ~/jiminny/app'\ncnt='docker exec -ti $(docker ps | grep worker | awk '\\''{print $1}'\\'') /bin/bash -c \"cd /home/jiminny && bash\"'\nco='git checkout'\ncov='./vendor/bin/phpunit tests/Unit --coverage-html=build/coverage'\ncsfix='make cs-fix'\ndev='docker exec -ti $(docker ps -q --filter \"name=docker_lamp_1\") /bin/bash'\neu='ssh lukas@jiminny-eu-bastion -D 127.0.0.1:7073 -L 7532:db:3306'\neues='ssh ubuntu@jiminny-eu-ecs1 -L 7960:vpc-activities7-e7pfbl7wojjjnvp7olfpudrgke.eu-west-1.es.amazonaws.com:80'\next='nvm use 20 && cd ~/jiminny/extension-app && yarn build:dev && yarn preview'\nfe='yarn && nvm use 24 && cd ~/jiminny/app/front-end && yarn build:watch'\nfe3='cd ~/jiminny/app/front-end-vue3 && yarn build:watch:production'\ngbr='git branch --sort=-committerdate'\ngcb='git branch --show-current | pbcopy'\ngs='git status'\nhhh=history\nhhs='history 0 | grep '\ninstall_nano='apt-get update & apt-get install nano'\nkar='cp -f ~/DEV/settings/goku-karabiner-settings/karabiner.edn ~/.config/karabiner.edn && goku'\nll='ls -la --color=tty'\nlock='kill %1 2>/dev/null; sleep 1 && pmset displaysleepnow'\nnas='ssh Adm1n@192.168.0.242 -p22'\npoetryshell='eval \"\"'\nprod='ssh lukas@jiminny-prod-bastion -D 127.0.0.1:7072 -L 7632:db:3306'\nprodes='ssh ubuntu@jiminny-prod-ecs1 -L 7970:vpc-activities7-3o2zlrelmga5qicf2yxxwtx6bi.us-east-2.es.amazonaws.com:80'\nprophet='cd ~/jiminny/app'\nprophetdown='aws-vault exec staging -- bash -c \"env | grep AWS_ > aws-creds.env && docker compose -f docker-compose.yml -f docker-compose.dev.yml down\"'\nprophetup='aws-vault exec staging -- bash -c \"env | grep AWS_ > aws-creds.env && docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build\"'\nqa='ssh lukas@jiminny-qa-bastion -D 127.0.0.1:7074 -L 7432:db:3306'\nqaes='ssh ubuntu@jiminny-qa-ecs1 -L 7950:vpc-activities7-s5zchrs4xqcnav3rjzmxgxvfvq.us-east-2.es.amazonaws.com:80'\nqai='ssh lukas@jiminny-qai-bastion -D 127.0.0.1:7075 -L 7777:jiminny-db-qai.c3uemcm84st0.us-east-2.rds.amazonaws.com:3306'\nrmbc='rm -rf bootstrap/cache/*.php'\nrun-help=man\nsp-db='sqlite3 ~/.screenpipe/db.sqlite '\nsp-start='npx screenpipe@latest record --disable-audio --ignored-windows \"Boosteroid\"'\nsp-status='curl -s http://localhost:3030/health | jq \"{status, frame_status, audio_status, last_frame: .last_frame_timestamp, uptime: .pipeline.uptime_secs, fps: .pipeline.capture_fps_actual, frames: .pipeline.frames_captured}\"'\nsp-stop='pkill -f screenpipe && echo '\\''screenpipe stopped'\\'\nstg='ssh lukas@jiminny-stage-bastion -D 127.0.0.1:7071 -L 7732:db:3306'\nstges='ssh ubuntu@jiminny-stage-ecs1 -L 7980:vpc-activities7-tgeodjeaugnaiigqgdcjjkrrj4.us-east-2.es.amazonaws.com:80'\nveu='ssh jiminny-eu-ecs1'\nveu10='ssh jiminny-eu-ecs10'\nveu11='ssh jiminny-eu-ecs11'\nveu12='ssh jiminny-eu-ecs12'\nveu2='ssh jiminny-eu-ecs2'\nveu3='ssh jiminny-eu-ecs3'\nveu4='ssh jiminny-eu-ecs4'\nveu5='ssh jiminny-eu-ecs5'\nveu6='ssh jiminny-eu-ecs6'\nveu7='ssh jiminny-eu-ecs7'\nveu8='ssh jiminny-eu-ecs8'\nveu9='ssh jiminny-eu-ecs9'\nvprod='ssh jiminny-prod-ecs1'\nvprod10='ssh jiminny-prod-ecs10'\nvprod11='ssh jiminny-prod-ecs11'\nvprod12='ssh jiminny-prod-ecs12'\nvprod2='ssh jiminny-prod-ecs2'\nvprod3='ssh jiminny-prod-ecs3'\nvprod4='ssh jiminny-prod-ecs4'\nvprod5='ssh jiminny-prod-ecs5'\nvprod6='ssh jiminny-prod-ecs6'\nvprod7='ssh jiminny-prod-ecs7'\nvprod8='ssh jiminny-prod-ecs8'\nvprod9='ssh jiminny-prod-ecs9'\nvqa='ssh jiminny-qa-ecs1'\nvqa2='ssh jiminny-qa-ecs2'\nvqai='ssh jiminny-qai-ecs1'\nvqai2='ssh jiminny-qai-ecs2'\nvstage='ssh ec2-user@jiminny-subenv-worker-app0'\nvstg='ssh jiminny-stage-ecs1'\nvstg2='ssh ubuntu@jiminny-stage-ecs2'\nwhich-command=whence\nwork='cd ~/jiminny/infrastructure/dev/docker && docker compose up'\nworkoff='kill %1'\nworkon='caffeinate -d & echo \"Display sleep disabled (PID $!)\"'\nxd='make docker-xdebug-disable'\nxe='make docker-xdebug-enable'\nzp='nano ~/.zprofile'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record\ndetected hardware tier: Mid\nwarning: parakeet is not supported on this platform, using whisper-tiny instead\n2026-05-14T09:24:57.412901Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store\nchecking permissions...\n screen recording: ok\n microphone: ok\n accessibility: ok\n2026-05-14T09:24:57.504235Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6\n2026-05-14T09:24:58.108327Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor\n2026-05-14T09:24:58.110039Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)\n2026-05-14T09:24:58.110396Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)\n2026-05-14T09:24:58.131971Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true\n2026-05-14T09:24:58.132049Z INFO screenpipe: meeting detector enabled — independent of transcription mode\n2026-05-14T09:24:58.543048Z INFO screenpipe: API server listening on 127.0.0.1:3030 (localhost only)\n2026-05-14T09:24:58.543106Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key\n2026-05-14T09:24:58.542983Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)\n2026-05-14T09:24:58.542992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)\n2026-05-14T09:24:58.543188Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager\n2026-05-14T09:24:58.545885Z INFO screenpipe_core::pipes: loaded pipe: day-recap\n2026-05-14T09:24:58.546638Z INFO screenpipe_core::pipes: loaded pipe: standup-update\n2026-05-14T09:24:58.546795Z INFO screenpipe_core::pipes: loaded pipe: ai-habits\n2026-05-14T09:24:58.547356Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown\n2026-05-14T09:24:58.547453Z INFO screenpipe_core::pipes: loaded pipe: video-export\n2026-05-14T09:24:58.547767Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary\n2026-05-14T09:24:58.547888Z INFO screenpipe_core::pipes: loaded 6 pipes from \"/Users/lukas/.screenpipe/pipes\"\n\n\n\n _ \n __________________ ___ ____ ____ (_____ ___ \n / ___/ ___/ ___/ _ \\/ _ \\/ __ \\ / __ \\/ / __ \\/ _ \\\n (__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/\n/____/\\___/_/ \\___/\\___/_/ /_/ / .___/_/ .___/\\___/ \n /_/ /_/ \n\n\n\npower AI by everything you've seen, said or heard\n2026-05-14T09:24:58.550735Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)\nopen source | runs locally | developer friendly\n\n\n┌────────────────────────┬────────────────────────────────────┐\n│ setting │ value │\n├────────────────────────┼────────────────────────────────────┤\n│ audio chunk duration │ 30 seconds │\n│ port │ 3030 │\n│ audio disabled │ false │\n│ vision disabled │ false │\n│ pause on DRM content │ false │\n│ audio engine │ Parakeet │\n│ vad engine │ Silero │\n│ data directory │ /Users/lukas/.screenpipe │\n│ debug mode │ false │\n│ telemetry │ true │\n│ use pii removal │ true │\n│ use all monitors │ true │\n│ ignored windows │ [] │\n│ included windows │ [] │\n│ cloud sync │ disabled │\n│ auto-destruct pid │ 0 │\n│ deepgram key │ not set │\n│ api auth │ enabled │\n│ encrypt secrets │ disabled │\n│ retention days │ 14 │\n│ retention mode │ media-only (keep transcripts) │\n├────────────────────────┼────────────────────────────────────┤\n│ languages │ │\n│ │ all languages │\n├────────────────────────┼────────────────────────────────────┤\n│ monitors │ │\n│ │ id: 1 │\n│ │ id: 2 │\n├────────────────────────┼────────────────────────────────────┤\n│ audio devices │ │\n│ │ soundcore AeroClip (input) │\n│ │ System Audio (output) │\n└────────────────────────┴────────────────────────────────────┘\nyou are using local processing. all your data stays on your computer.\n\nwarning: telemetry is enabled. only error-level data will be sent.\nto disable, use the --disable-telemetry flag.\n\ncheck latest changes here: https://github.com/screenpipe/screenpipe/releases\n2026-05-14T09:24:58.552083Z INFO screenpipe: starting UI event capture\n2026-05-14T09:24:58.555587Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh\n2026-05-14T09:24:58.557961Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))\n2026-05-14T09:24:58.568371Z INFO screenpipe_engine::ui_recorder: Starting UI event capture\n2026-05-14T09:24:58.584826Z INFO screenpipe: text-PII worker skipped at startup — async_pii_redaction=false. OPF model (~2.8 GB) will NOT be downloaded or loaded. Toggle via Settings → Privacy → AI PII removal.\n2026-05-14T09:24:58.584861Z INFO screenpipe: image-PII worker skipped at startup — async_image_pii_redaction=false. rfdetr_v9 model (~108 MB) will NOT be downloaded or loaded. Toggle via Settings → Privacy → AI PII removal.\n2026-05-14T09:24:58.584915Z INFO screenpipe_engine::ui_recorder: UI recording session started: 25f92ee5-c210-4bb0-aa44-4054d2351b03\n2026-05-14T09:24:58.584978Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)\n2026-05-14T09:24:58.585134Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-05-13 06:24:58.585133 UTC to 2026-05-14 06:24:58.585133 UTC)\n2026-05-14T09:24:58.585862Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)\n2026-05-14T09:24:58.594987Z INFO screenpipe_engine::server: Server listening on 127.0.0.1:3030\n2026-05-14T09:24:58.599110Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030\n2026-05-14T09:24:58.699260Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)\n2026-05-14T09:24:58.699315Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)\n2026-05-14T09:24:58.699350Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)\n2026-05-14T09:24:58.746653Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (3008x1253)\n2026-05-14T09:24:58.746781Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)\n2026-05-14T09:24:58.746794Z INFO screenpipe_engine::vision_manager::manager: VisionManager started with 2/2 monitor(s)\n2026-05-14T09:24:58.746801Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s backstop poll)\n2026-05-14T09:24:58.746815Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)\n2026-05-14T09:24:59.307089Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 0 excluded)\n2026-05-14T09:24:59.416921Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 0 excluded)\n2026-05-14T09:24:59.478046Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=38633, dur=113ms\n2026-05-14T09:24:59.615567Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=38634, dur=139ms\n2026-05-14T09:25:04.109913Z 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 frames f\\n LEFT JOIN video_chunks vc ON f.video_chunk_id = vc.id\\nWHERE\\n f.timestamp >= ?1\\n AND f.timestamp <= ?2\\n AND COALESCE(vc.file_path, f.snapshot_path, '') NOT LIKE 'cloud://%'\\nORDER BY\\n f.timestamp DESC,\\n f.offset_index DESC\\nLIMIT\\n 10000\\n\" rows_affected=0 rows_returned=9423 elapsed=5.524093667s\n2026-05-14T09:25:04.143960Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 9423 frame entries, coverage from 2026-05-13 06:24:58.585133 UTC\n2026-05-14T09:25:08.557254Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-05-14T09:25:08.557399Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-05-14T09:25:08.557427Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nggml_metal_device_init: tensor API disabled for pre-M5 and pre-A19 devices\nggml_metal_library_init: using embedded metal library\nggml_metal_library_init: loaded in 0.045 sec\nggml_metal_rsets_init: creating a residency set collection (keep_alive = 180 s)\nggml_metal_device_init: GPU name: Apple M1\nggml_metal_device_init: GPU family: MTLGPUFamilyApple7 (1007)\nggml_metal_device_init: GPU family: MTLGPUFamilyCommon3 (3003)\nggml_metal_device_init: GPU family: MTLGPUFamilyMetal3 (5001)\nggml_metal_device_init: simdgroup reduction = true\nggml_metal_device_init: simdgroup matrix mul. = true\nggml_metal_device_init: has unified memory = true\nggml_metal_device_init: has bfloat = true\nggml_metal_device_init: has tensor = false\nggml_metal_device_init: use residency sets = true\nggml_metal_device_init: use shared buffers = true\nggml_metal_device_init: recommendedMaxWorkingSetSize = 11453.25 MB\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-05-14T09:25:08.714171Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-05-14T09:25:08.721297Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-05-14T09:25:08.727575Z INFO screenpipe_audio::audio_manager::manager: seeded 21 speakers (named + unnamed) from DB into embedding manager\n2026-05-14T09:25:08.727664Z INFO screenpipe_audio::audio_manager::manager: audio manager started\n2026-05-14T09:25:08.727731Z INFO screenpipe_audio::audio_manager::manager: calendar-assisted speaker diarization: listening for meeting events\n2026-05-14T09:25:09.238925Z INFO screenpipe_audio::device::device_manager: starting recording for device: System Audio (output)\n2026-05-14T09:25:09.325492Z INFO screenpipe_audio::device::device_manager: starting recording for device: soundcore AeroClip (input)\n2026-05-14T09:25:09.326604Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for soundcore AeroClip (input) (bluetooth / 30s segments)\n2026-05-14T09:25:09.326657Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for System Audio (output) (unknown / 30s segments)\n2026-05-14T09:25:16.929049Z WARN screenpipe_a11y::tree::macos_lines: lines: AXUIElementCopyParameterizedAttributeValue(AXLineForIndex) failed status=os::Status { raw: -25212, fcc: \"....\", help: \"https://www.osstatus.com?search=-25212\" } — first failure (further failures suppressed); search highlights will fall back to paragraph bbox on this app\n2026-05-14T09:25:42.118426Z INFO screenpipe_audio::transcription::handle_new_transcript: device System Audio (output) skipping duplicate transcript (entire content overlaps with previous)\n2026-05-14T09:26:02.676206Z 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=0 rows_returned=56 elapsed=4.131920875s\n2026-05-14T09:26:02.676359Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 56 eligible frames\n2026-05-14T09:26:04.733866Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 29 frames, 4.0MB → 1.9MB (2.1x), 29 JPEGs deleted\n2026-05-14T09:26:06.932633Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.3MB → 2.2MB (2.0x), 25 JPEGs deleted\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-14T09:27:10.299675Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks","depth":4,"on_screen":true,"value":"ggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:34:02.333860Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:35:59.996074Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:36:06.828724Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:36:08.344162Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for MacBook Pro Microphone (input)\n\n tip: sign in for higher AI quotas + cloud sync:\n screenpipe login\n\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:38:09.099371Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:38:37.344312Z 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=0 rows_returned=44 elapsed=5.107326084s\n2026-05-13T20:38:37.346139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 44 eligible frames\n2026-05-13T20:38:38.686723Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 5.1MB → 0.5MB (10.0x), 18 JPEGs deleted\n2026-05-13T20:38:41.220417Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.4MB → 3.3MB (1.6x), 24 JPEGs deleted\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:40:11.364685Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n\n tip: get the screenpipe desktop app for the full experience\n https://screenpi.pe\n\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:42:13.293671Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:43:42.753501Z 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=0 rows_returned=22 elapsed=1.527175333s\n2026-05-13T20:43:42.753626Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 22 eligible frames\n2026-05-13T20:43:43.862384Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.8MB → 0.5MB (5.8x), 10 JPEGs deleted\n2026-05-13T20:43:44.995456Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.0MB → 0.3MB (5.9x), 10 JPEGs deleted\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:44:15.490296Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:46:17.561354Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n\n tip: wire screenpipe into claude with one command:\n claude mcp add screenpipe -- npx -y screenpipe-mcp\n then ask claude to build a pipe that tracks who you are, your todos, and how you spend your time from your screen activity\n\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:48:19.446216Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:48:47.503128Z 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=0 rows_returned=11 elapsed=2.495709958s\n2026-05-13T20:48:47.503288Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 11 eligible frames\n2026-05-13T20:48:48.316165Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 1.4MB → 0.5MB (2.9x), 5 JPEGs deleted\n2026-05-13T20:48:48.942276Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 4 frames, 0.8MB → 0.3MB (2.4x), 4 JPEGs deleted\n2026-05-13T20:49:42.528723Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)\n2026-05-13T20:49:43.434142Z 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)\n2026-05-13T20:49:43.440276Z 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)\n2026-05-13T20:49:44.371959Z INFO screenpipe_engine::event_driven_capture: invalidating persistent streams after unlock/wake for monitor 1\n2026-05-13T20:49:44.767833Z WARN screenpipe_audio::audio_manager::device_monitor: [DEVICE_RECOVERY] detected stale recording handle for MacBook Pro Microphone (input), cleaning up for restart\n2026-05-13T20:49:44.767967Z INFO screenpipe_audio::device::device_manager: Stopping device: MacBook Pro Microphone (input)\n2026-05-13T20:49:44.785602Z INFO sck_rs::stream_manager: stopped 2 persistent stream(s)\n2026-05-13T20:49:45.364548Z INFO screenpipe_audio::device::device_manager: starting recording for device: MacBook Pro Microphone (input)\n2026-05-13T20:49:45.364628Z INFO screenpipe_audio::audio_manager::device_monitor: restarted with system default device: MacBook Pro Microphone (input)\n2026-05-13T20:49:45.364676Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for MacBook Pro Microphone (input) (wired / 30s segments)\n2026-05-13T20:49:46.278662Z WARN sqlx::query: summary=\"INSERT INTO frames ( …\" db.statement=\"\\n\\nINSERT INTO\\n frames (\\n video_chunk_id,\\n offset_index,\\n timestamp,\\n name,\\n browser_url,\\n app_name,\\n window_name,\\n focused,\\n device_name,\\n snapshot_path,\\n capture_trigger,\\n accessibility_text,\\n text_source,\\n accessibility_tree_json,\\n content_hash,\\n simhash,\\n full_text,\\n elements_ref_frame_id,\\n document_path\\n )\\nVALUES\\n (\\n NULL,\\n 0,\\n ?1,\\n ?2,\\n ?3,\\n ?4,\\n ?5,\\n ?6,\\n ?7,\\n ?8,\\n ?9,\\n ?10,\\n ?11,\\n ?12,\\n ?13,\\n ?14,\\n ?15,\\n ?16,\\n ?17\\n )\\n\" rows_affected=1 rows_returned=0 elapsed=1.244703625s\n2026-05-13T20:49:46.796019Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 0 excluded)\n2026-05-13T20:49:47.183906Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 0 excluded)\n2026-05-13T20:49:48.460135Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 96.4ms elapsed (expected 5.3ms) → inserting 91.1ms silence (8742 samples)\n2026-05-13T20:49:49.414321Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 115.3ms elapsed (expected 5.3ms) → inserting 109.9ms silence (10554 samples)\n2026-05-13T20:49:50.138185Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 123.4ms elapsed (expected 5.3ms) → inserting 118.1ms silence (11335 samples)\n2026-05-13T20:49:50.422739Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 82.2ms elapsed (expected 5.3ms) → inserting 76.9ms silence (7383 samples)\n2026-05-13T20:49:50.671835Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 249.1ms elapsed (expected 5.3ms) → inserting 243.8ms silence (23401 samples)\n2026-05-13T20:49:57.489211Z 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=430 elapsed=14.406079875s\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-05-13T20:50:25.337392Z 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=430 elapsed=1.06712725s\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:50:34.187500Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:50:40.135101Z 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=430 elapsed=1.170097666s\n\n tip: install a starter bundle of pipes:\n screenpipe install https://screenpi.pe/start.json\n\n2026-05-13T20:51:47.151342Z 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=432 elapsed=1.377976291s\nzsh: terminated npx screenpipe@latest record\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias sp-start\nzsh: command not found: alias\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias sp-start\nzsh: command not found: alias\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias\naddssh='ssh-add ~/.ssh/*'\napp='cd ~/jiminny/app'\ncnt='docker exec -ti $(docker ps | grep worker | awk '\\''{print $1}'\\'') /bin/bash -c \"cd /home/jiminny && bash\"'\nco='git checkout'\ncov='./vendor/bin/phpunit tests/Unit --coverage-html=build/coverage'\ncsfix='make cs-fix'\ndev='docker exec -ti $(docker ps -q --filter \"name=docker_lamp_1\") /bin/bash'\neu='ssh lukas@jiminny-eu-bastion -D 127.0.0.1:7073 -L 7532:db:3306'\neues='ssh ubuntu@jiminny-eu-ecs1 -L 7960:vpc-activities7-e7pfbl7wojjjnvp7olfpudrgke.eu-west-1.es.amazonaws.com:80'\next='nvm use 20 && cd ~/jiminny/extension-app && yarn build:dev && yarn preview'\nfe='yarn && nvm use 24 && cd ~/jiminny/app/front-end && yarn build:watch'\nfe3='cd ~/jiminny/app/front-end-vue3 && yarn build:watch:production'\ngbr='git branch --sort=-committerdate'\ngcb='git branch --show-current | pbcopy'\ngs='git status'\nhhh=history\nhhs='history 0 | grep '\ninstall_nano='apt-get update & apt-get install nano'\nkar='cp -f ~/DEV/settings/goku-karabiner-settings/karabiner.edn ~/.config/karabiner.edn && goku'\nll='ls -la --color=tty'\nlock='kill %1 2>/dev/null; sleep 1 && pmset displaysleepnow'\nnas='ssh Adm1n@192.168.0.242 -p22'\npoetryshell='eval \"\"'\nprod='ssh lukas@jiminny-prod-bastion -D 127.0.0.1:7072 -L 7632:db:3306'\nprodes='ssh ubuntu@jiminny-prod-ecs1 -L 7970:vpc-activities7-3o2zlrelmga5qicf2yxxwtx6bi.us-east-2.es.amazonaws.com:80'\nprophet='cd ~/jiminny/app'\nprophetdown='aws-vault exec staging -- bash -c \"env | grep AWS_ > aws-creds.env && docker compose -f docker-compose.yml -f docker-compose.dev.yml down\"'\nprophetup='aws-vault exec staging -- bash -c \"env | grep AWS_ > aws-creds.env && docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build\"'\nqa='ssh lukas@jiminny-qa-bastion -D 127.0.0.1:7074 -L 7432:db:3306'\nqaes='ssh ubuntu@jiminny-qa-ecs1 -L 7950:vpc-activities7-s5zchrs4xqcnav3rjzmxgxvfvq.us-east-2.es.amazonaws.com:80'\nqai='ssh lukas@jiminny-qai-bastion -D 127.0.0.1:7075 -L 7777:jiminny-db-qai.c3uemcm84st0.us-east-2.rds.amazonaws.com:3306'\nrmbc='rm -rf bootstrap/cache/*.php'\nrun-help=man\nsp-db='sqlite3 ~/.screenpipe/db.sqlite '\nsp-start='npx screenpipe@latest record --disable-audio --ignored-windows \"Boosteroid\"'\nsp-status='curl -s http://localhost:3030/health | jq \"{status, frame_status, audio_status, last_frame: .last_frame_timestamp, uptime: .pipeline.uptime_secs, fps: .pipeline.capture_fps_actual, frames: .pipeline.frames_captured}\"'\nsp-stop='pkill -f screenpipe && echo '\\''screenpipe stopped'\\'\nstg='ssh lukas@jiminny-stage-bastion -D 127.0.0.1:7071 -L 7732:db:3306'\nstges='ssh ubuntu@jiminny-stage-ecs1 -L 7980:vpc-activities7-tgeodjeaugnaiigqgdcjjkrrj4.us-east-2.es.amazonaws.com:80'\nveu='ssh jiminny-eu-ecs1'\nveu10='ssh jiminny-eu-ecs10'\nveu11='ssh jiminny-eu-ecs11'\nveu12='ssh jiminny-eu-ecs12'\nveu2='ssh jiminny-eu-ecs2'\nveu3='ssh jiminny-eu-ecs3'\nveu4='ssh jiminny-eu-ecs4'\nveu5='ssh jiminny-eu-ecs5'\nveu6='ssh jiminny-eu-ecs6'\nveu7='ssh jiminny-eu-ecs7'\nveu8='ssh jiminny-eu-ecs8'\nveu9='ssh jiminny-eu-ecs9'\nvprod='ssh jiminny-prod-ecs1'\nvprod10='ssh jiminny-prod-ecs10'\nvprod11='ssh jiminny-prod-ecs11'\nvprod12='ssh jiminny-prod-ecs12'\nvprod2='ssh jiminny-prod-ecs2'\nvprod3='ssh jiminny-prod-ecs3'\nvprod4='ssh jiminny-prod-ecs4'\nvprod5='ssh jiminny-prod-ecs5'\nvprod6='ssh jiminny-prod-ecs6'\nvprod7='ssh jiminny-prod-ecs7'\nvprod8='ssh jiminny-prod-ecs8'\nvprod9='ssh jiminny-prod-ecs9'\nvqa='ssh jiminny-qa-ecs1'\nvqa2='ssh jiminny-qa-ecs2'\nvqai='ssh jiminny-qai-ecs1'\nvqai2='ssh jiminny-qai-ecs2'\nvstage='ssh ec2-user@jiminny-subenv-worker-app0'\nvstg='ssh jiminny-stage-ecs1'\nvstg2='ssh ubuntu@jiminny-stage-ecs2'\nwhich-command=whence\nwork='cd ~/jiminny/infrastructure/dev/docker && docker compose up'\nworkoff='kill %1'\nworkon='caffeinate -d & echo \"Display sleep disabled (PID $!)\"'\nxd='make docker-xdebug-disable'\nxe='make docker-xdebug-enable'\nzp='nano ~/.zprofile'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record\ndetected hardware tier: Mid\nwarning: parakeet is not supported on this platform, using whisper-tiny instead\n2026-05-14T09:24:57.412901Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store\nchecking permissions...\n screen recording: ok\n microphone: ok\n accessibility: ok\n2026-05-14T09:24:57.504235Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6\n2026-05-14T09:24:58.108327Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor\n2026-05-14T09:24:58.110039Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)\n2026-05-14T09:24:58.110396Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)\n2026-05-14T09:24:58.131971Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true\n2026-05-14T09:24:58.132049Z INFO screenpipe: meeting detector enabled — independent of transcription mode\n2026-05-14T09:24:58.543048Z INFO screenpipe: API server listening on 127.0.0.1:3030 (localhost only)\n2026-05-14T09:24:58.543106Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key\n2026-05-14T09:24:58.542983Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)\n2026-05-14T09:24:58.542992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)\n2026-05-14T09:24:58.543188Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager\n2026-05-14T09:24:58.545885Z INFO screenpipe_core::pipes: loaded pipe: day-recap\n2026-05-14T09:24:58.546638Z INFO screenpipe_core::pipes: loaded pipe: standup-update\n2026-05-14T09:24:58.546795Z INFO screenpipe_core::pipes: loaded pipe: ai-habits\n2026-05-14T09:24:58.547356Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown\n2026-05-14T09:24:58.547453Z INFO screenpipe_core::pipes: loaded pipe: video-export\n2026-05-14T09:24:58.547767Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary\n2026-05-14T09:24:58.547888Z INFO screenpipe_core::pipes: loaded 6 pipes from \"/Users/lukas/.screenpipe/pipes\"\n\n\n\n _ \n __________________ ___ ____ ____ (_____ ___ \n / ___/ ___/ ___/ _ \\/ _ \\/ __ \\ / __ \\/ / __ \\/ _ \\\n (__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/\n/____/\\___/_/ \\___/\\___/_/ /_/ / .___/_/ .___/\\___/ \n /_/ /_/ \n\n\n\npower AI by everything you've seen, said or heard\n2026-05-14T09:24:58.550735Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)\nopen source | runs locally | developer friendly\n\n\n┌────────────────────────┬────────────────────────────────────┐\n│ setting │ value │\n├────────────────────────┼────────────────────────────────────┤\n│ audio chunk duration │ 30 seconds │\n│ port │ 3030 │\n│ audio disabled │ false │\n│ vision disabled │ false │\n│ pause on DRM content │ false │\n│ audio engine │ Parakeet │\n│ vad engine │ Silero │\n│ data directory │ /Users/lukas/.screenpipe │\n│ debug mode │ false │\n│ telemetry │ true │\n│ use pii removal │ true │\n│ use all monitors │ true │\n│ ignored windows │ [] │\n│ included windows │ [] │\n│ cloud sync │ disabled │\n│ auto-destruct pid │ 0 │\n│ deepgram key │ not set │\n│ api auth │ enabled │\n│ encrypt secrets │ disabled │\n│ retention days │ 14 │\n│ retention mode │ media-only (keep transcripts) │\n├────────────────────────┼────────────────────────────────────┤\n│ languages │ │\n│ │ all languages │\n├────────────────────────┼────────────────────────────────────┤\n│ monitors │ │\n│ │ id: 1 │\n│ │ id: 2 │\n├────────────────────────┼────────────────────────────────────┤\n│ audio devices │ │\n│ │ soundcore AeroClip (input) │\n│ │ System Audio (output) │\n└────────────────────────┴────────────────────────────────────┘\nyou are using local processing. all your data stays on your computer.\n\nwarning: telemetry is enabled. only error-level data will be sent.\nto disable, use the --disable-telemetry flag.\n\ncheck latest changes here: https://github.com/screenpipe/screenpipe/releases\n2026-05-14T09:24:58.552083Z INFO screenpipe: starting UI event capture\n2026-05-14T09:24:58.555587Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh\n2026-05-14T09:24:58.557961Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))\n2026-05-14T09:24:58.568371Z INFO screenpipe_engine::ui_recorder: Starting UI event capture\n2026-05-14T09:24:58.584826Z INFO screenpipe: text-PII worker skipped at startup — async_pii_redaction=false. OPF model (~2.8 GB) will NOT be downloaded or loaded. Toggle via Settings → Privacy → AI PII removal.\n2026-05-14T09:24:58.584861Z INFO screenpipe: image-PII worker skipped at startup — async_image_pii_redaction=false. rfdetr_v9 model (~108 MB) will NOT be downloaded or loaded. Toggle via Settings → Privacy → AI PII removal.\n2026-05-14T09:24:58.584915Z INFO screenpipe_engine::ui_recorder: UI recording session started: 25f92ee5-c210-4bb0-aa44-4054d2351b03\n2026-05-14T09:24:58.584978Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)\n2026-05-14T09:24:58.585134Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-05-13 06:24:58.585133 UTC to 2026-05-14 06:24:58.585133 UTC)\n2026-05-14T09:24:58.585862Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)\n2026-05-14T09:24:58.594987Z INFO screenpipe_engine::server: Server listening on 127.0.0.1:3030\n2026-05-14T09:24:58.599110Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030\n2026-05-14T09:24:58.699260Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)\n2026-05-14T09:24:58.699315Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)\n2026-05-14T09:24:58.699350Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)\n2026-05-14T09:24:58.746653Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (3008x1253)\n2026-05-14T09:24:58.746781Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)\n2026-05-14T09:24:58.746794Z INFO screenpipe_engine::vision_manager::manager: VisionManager started with 2/2 monitor(s)\n2026-05-14T09:24:58.746801Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s backstop poll)\n2026-05-14T09:24:58.746815Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)\n2026-05-14T09:24:59.307089Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 0 excluded)\n2026-05-14T09:24:59.416921Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 0 excluded)\n2026-05-14T09:24:59.478046Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=38633, dur=113ms\n2026-05-14T09:24:59.615567Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=38634, dur=139ms\n2026-05-14T09:25:04.109913Z 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 frames f\\n LEFT JOIN video_chunks vc ON f.video_chunk_id = vc.id\\nWHERE\\n f.timestamp >= ?1\\n AND f.timestamp <= ?2\\n AND COALESCE(vc.file_path, f.snapshot_path, '') NOT LIKE 'cloud://%'\\nORDER BY\\n f.timestamp DESC,\\n f.offset_index DESC\\nLIMIT\\n 10000\\n\" rows_affected=0 rows_returned=9423 elapsed=5.524093667s\n2026-05-14T09:25:04.143960Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 9423 frame entries, coverage from 2026-05-13 06:24:58.585133 UTC\n2026-05-14T09:25:08.557254Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-05-14T09:25:08.557399Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-05-14T09:25:08.557427Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nggml_metal_device_init: tensor API disabled for pre-M5 and pre-A19 devices\nggml_metal_library_init: using embedded metal library\nggml_metal_library_init: loaded in 0.045 sec\nggml_metal_rsets_init: creating a residency set collection (keep_alive = 180 s)\nggml_metal_device_init: GPU name: Apple M1\nggml_metal_device_init: GPU family: MTLGPUFamilyApple7 (1007)\nggml_metal_device_init: GPU family: MTLGPUFamilyCommon3 (3003)\nggml_metal_device_init: GPU family: MTLGPUFamilyMetal3 (5001)\nggml_metal_device_init: simdgroup reduction = true\nggml_metal_device_init: simdgroup matrix mul. = true\nggml_metal_device_init: has unified memory = true\nggml_metal_device_init: has bfloat = true\nggml_metal_device_init: has tensor = false\nggml_metal_device_init: use residency sets = true\nggml_metal_device_init: use shared buffers = true\nggml_metal_device_init: recommendedMaxWorkingSetSize = 11453.25 MB\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-05-14T09:25:08.714171Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-05-14T09:25:08.721297Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-05-14T09:25:08.727575Z INFO screenpipe_audio::audio_manager::manager: seeded 21 speakers (named + unnamed) from DB into embedding manager\n2026-05-14T09:25:08.727664Z INFO screenpipe_audio::audio_manager::manager: audio manager started\n2026-05-14T09:25:08.727731Z INFO screenpipe_audio::audio_manager::manager: calendar-assisted speaker diarization: listening for meeting events\n2026-05-14T09:25:09.238925Z INFO screenpipe_audio::device::device_manager: starting recording for device: System Audio (output)\n2026-05-14T09:25:09.325492Z INFO screenpipe_audio::device::device_manager: starting recording for device: soundcore AeroClip (input)\n2026-05-14T09:25:09.326604Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for soundcore AeroClip (input) (bluetooth / 30s segments)\n2026-05-14T09:25:09.326657Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for System Audio (output) (unknown / 30s segments)\n2026-05-14T09:25:16.929049Z WARN screenpipe_a11y::tree::macos_lines: lines: AXUIElementCopyParameterizedAttributeValue(AXLineForIndex) failed status=os::Status { raw: -25212, fcc: \"....\", help: \"https://www.osstatus.com?search=-25212\" } — first failure (further failures suppressed); search highlights will fall back to paragraph bbox on this app\n2026-05-14T09:25:42.118426Z INFO screenpipe_audio::transcription::handle_new_transcript: device System Audio (output) skipping duplicate transcript (entire content overlaps with previous)\n2026-05-14T09:26:02.676206Z 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=0 rows_returned=56 elapsed=4.131920875s\n2026-05-14T09:26:02.676359Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 56 eligible frames\n2026-05-14T09:26:04.733866Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 29 frames, 4.0MB → 1.9MB (2.1x), 29 JPEGs deleted\n2026-05-14T09:26:06.932633Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.3MB → 2.2MB (2.0x), 25 JPEGs deleted\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-14T09:27:10.299675Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks","is_focused":true}]...
|
-1436731437270198571
|
-5463917750643788320
|
click
|
accessibility
|
NULL
|
ggml_metal_init: use concurrency = true
ggml_me ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.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-13T20:34:02.333860Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-13T20:35:59.996074Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.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-13T20:36:06.828724Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-13T20:36:08.344162Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for MacBook Pro Microphone (input)
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
2026-05-13T20:38:09.099371Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-13T20:38:37.344312Z 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=0 rows_returned=44 elapsed=5.107326084s
2026-05-13T20:38:37.346139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 44 eligible frames
2026-05-13T20:38:38.686723Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 5.1MB → 0.5MB (10.0x), 18 JPEGs deleted
2026-05-13T20:38:41.220417Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.4MB → 3.3MB (1.6x), 24 JPEGs deleted
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.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-13T20:40:11.364685Z 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 ~ $ alias sp-start
zsh: command not found: alias
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias sp-start
zsh: command not found: alias
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias
addssh='ssh-add ~/.ssh/*'
app='cd ~/jiminny/app'
cnt='docker exec -ti $(docker ps | grep worker | awk '\''{print $1}'\'') /bin/bash -c "cd /home/jiminny && bash"'
co='git checkout'
cov='./vendor/bin/phpunit tests/Unit --coverage-html=build/coverage'
csfix='make cs-fix'
dev='docker exec -ti $(docker ps -q --filter "name=docker_lamp_1") /bin/bash'
eu='ssh lukas@jiminny-eu-bastion -D [IP_ADDRESS]:7073 -L 7532:db:3306'
eues='ssh ubuntu@jiminny-eu-ecs1 -L 7960:vpc-activities7-e7pfbl7wojjjnvp7olfpudrgke.eu-west-1.es.amazonaws.com:80'
ext='nvm use 20 && cd ~/jiminny/extension-app && yarn build:dev && yarn preview'
fe='yarn && nvm use 24 && cd ~/jiminny/app/front-end && yarn build:watch'
fe3='cd ~/jiminny/app/front-end-vue3 && yarn build:watch:production'
gbr='git branch --sort=-committerdate'
gcb='git branch --show-current | pbcopy'
gs='git status'
hhh=history
hhs='history 0 | grep '
install_nano='apt-get update & apt-get install nano'
kar='cp -f ~/DEV/settings/goku-karabiner-settings/karabiner.edn ~/.config/karabiner.edn && goku'
ll='ls -la --color=tty'
lock='kill %1 2>/dev/null; sleep 1 && pmset displaysleepnow'
nas='ssh Adm1n@[IP_ADDRESS] -p22'
poetryshell='eval ""'
prod='ssh lukas@jiminny-prod-bastion -D [IP_ADDRESS]:7072 -L 7632:db:3306'
prodes='ssh ubuntu@jiminny-prod-ecs1 -L 7970:vpc-activities7-3o2zlrelmga5qicf2yxxwtx6bi.us-east-2.es.amazonaws.com:80'
prophet='cd ~/jiminny/app'
prophetdown='aws-vault exec staging -- bash -c "env | grep AWS_ > aws-creds.env && docker compose -f docker-compose.yml -f docker-compose.dev.yml down"'
prophetup='aws-vault exec staging -- bash -c "env | grep AWS_ > aws-creds.env && docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build"'
qa='ssh lukas@jiminny-qa-bastion -D [IP_ADDRESS]:7074 -L 7432:db:3306'
qaes='ssh ubuntu@jiminny-qa-ecs1 -L 7950:vpc-activities7-s5zchrs4xqcnav3rjzmxgxvfvq.us-east-2.es.amazonaws.com:80'
qai='ssh lukas@jiminny-qai-bastion -D [IP_ADDRESS]:7075 -L 7777:jiminny-db-qai.c3uemcm84st0.us-east-2.rds.amazonaws.com:3306'
rmbc='rm -rf bootstrap/cache/*.php'
run-help=man
sp-db='sqlite3 ~/.screenpipe/db.sqlite '
sp-start='npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"'
sp-status='curl -s [URL_WITH_CREDENTIALS] -D [IP_ADDRESS]:7071 -L 7732:db:3306'
stges='ssh ubuntu@jiminny-stage-ecs1 -L 7980:vpc-activities7-tgeodjeaugnaiigqgdcjjkrrj4.us-east-2.es.amazonaws.com:80'
veu='ssh jiminny-eu-ecs1'
veu10='ssh jiminny-eu-ecs10'
veu11='ssh jiminny-eu-ecs11'
veu12='ssh jiminny-eu-ecs12'
veu2='ssh jiminny-eu-ecs2'
veu3='ssh jiminny-eu-ecs3'
veu4='ssh jiminny-eu-ecs4'
veu5='ssh jiminny-eu-ecs5'
veu6='ssh jiminny-eu-ecs6'
veu7='ssh jiminny-eu-ecs7'
veu8='ssh jiminny-eu-ecs8'
veu9='ssh jiminny-eu-ecs9'
vprod='ssh jiminny-prod-ecs1'
vprod10='ssh jiminny-prod-ecs10'
vprod11='ssh jiminny-prod-ecs11'
vprod12='ssh jiminny-prod-ecs12'
vprod2='ssh jiminny-prod-ecs2'
vprod3='ssh jiminny-prod-ecs3'
vprod4='ssh jiminny-prod-ecs4'
vprod5='ssh jiminny-prod-ecs5'
vprod6='ssh jiminny-prod-ecs6'
vprod7='ssh jiminny-prod-ecs7'
vprod8='ssh jiminny-prod-ecs8'
vprod9='ssh jiminny-prod-ecs9'
vqa='ssh jiminny-qa-ecs1'
vqa2='ssh jiminny-qa-ecs2'
vqai='ssh jiminny-qai-ecs1'
vqai2='ssh jiminny-qai-ecs2'
vstage='ssh ec2-user@jiminny-subenv-worker-app0'
vstg='ssh jiminny-stage-ecs1'
vstg2='ssh ubuntu@jiminny-stage-ecs2'
which-command=whence
work='cd ~/jiminny/infrastructure/dev/docker && docker compose up'
workoff='kill %1'
workon='caffeinate -d & echo "Display sleep disabled (PID $!)"'
xd='make docker-xdebug-disable'
xe='make docker-xdebug-enable'
zp='nano ~/.zprofile'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-05-14T09:24:57.412901Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
microphone: ok
accessibility: ok
2026-05-14T09:24:57.504235Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-05-14T09:24:58.108327Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-05-14T09:24:58.110039Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-05-14T09:24:58.110396Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-05-14T09:24:58.131971Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-05-14T09:24:58.132049Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-05-14T09:24:58.543048Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-05-14T09:24:58.543106Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-05-14T09:24:58.542983Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-05-14T09:24:58.542992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-05-14T09:24:58.543188Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-05-14T09:24:58.545885Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-05-14T09:24:58.546638Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-05-14T09:24:58.546795Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-05-14T09:24:58.547356Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-05-14T09:24:58.547453Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-05-14T09:24:58.547767Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-05-14T09:24:58.547888Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
2026-05-14T09:24:58.550735Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
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 │ │
│ │ soundcore AeroClip (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-14T09:24:58.552083Z INFO screenpipe: starting UI event capture
2026-05-14T09:24:58.555587Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
2026-05-14T09:24:58.557961Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-05-14T09:24:58.568371Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-05-14T09:24:58.584826Z INFO screenpipe: text-PII worker skipped at startup — async_pii_redaction=false. OPF model (~2.8 GB) will NOT be downloaded or loaded. Toggle via Settings → Privacy → AI PII removal.
2026-05-14T09:24:58.584861Z INFO screenpipe: image-PII worker skipped at startup — async_image_pii_redaction=false. rfdetr_v9 model (~108 MB) will NOT be downloaded or loaded. Toggle via Settings → Privacy → AI PII removal.
2026-05-14T09:24:58.584915Z INFO screenpipe_engine::ui_recorder: UI recording session started: 25f92ee5-c210-4bb0-aa44-4054d2351b03
2026-05-14T09:24:58.584978Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-05-14T09:24:58.585134Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-05-13 06:24:58.585133 UTC to 2026-05-14 06:24:58.585133 UTC)
2026-05-14T09:24:58.585862Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-05-14T09:24:58.594987Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-05-14T09:24:58.599110Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-05-14T09:24:58.699260Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-05-14T09:24:58.699315Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-05-14T09:24:58.699350Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-05-14T09:24:58.746653Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (3008x1253)
2026-05-14T09:24:58.746781Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-05-14T09:24:58.746794Z INFO screenpipe_engine::vision_manager::manager: VisionManager started with 2/2 monitor(s)
2026-05-14T09:24:58.746801Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s backstop poll)
2026-05-14T09:24:58.746815Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-05-14T09:24:59.307089Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 0 excluded)
2026-05-14T09:24:59.416921Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 0 excluded)
2026-05-14T09:24:59.478046Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=38633, dur=113ms
2026-05-14T09:24:59.615567Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=38634, dur=139ms
2026-05-14T09:25:04.109913Z 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 frames f\n LEFT JOIN video_chunks vc ON f.video_chunk_id = vc.id\nWHERE\n f.timestamp >= ?1\n AND f.timestamp <= ?2\n AND COALESCE(vc.file_path, f.snapshot_path, '') NOT LIKE 'cloud://%'\nORDER BY\n f.timestamp DESC,\n f.offset_index DESC\nLIMIT\n 10000\n" rows_affected=0 rows_returned=9423 elapsed=5.524093667s
2026-05-14T09:25:04.143960Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 9423 frame entries, coverage from 2026-05-13 06:24:58.585133 UTC
2026-05-14T09:25:08.557254Z INFO screenpipe_audio::transcription::engine: whisper model available: "/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin"
2026-05-14T09:25:08.557399Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)
2026-05-14T09:25:08.557427Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...
whisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'
whisper_init_with_params_no_state: use gpu = 1
whisper_init_with_params_no_state: flash attn = 0
whisper_init_with_params_no_state: gpu_device = 0
whisper_init_with_params_no_state: dtw = 0
ggml_metal_device_init: tensor API disabled for pre-M5 and pre-A19 devices
ggml_metal_library_init: using embedded metal library
ggml_metal_library_init: loaded in 0.045 sec
ggml_metal_rsets_init: creating a residency set collection (keep_alive = 180 s)
ggml_metal_device_init: GPU name: Apple M1
ggml_metal_device_init: GPU family: MTLGPUFamilyApple7 (1007)
ggml_metal_device_init: GPU family: MTLGPUFamilyCommon3 (3003)
ggml_metal_device_init: GPU family: MTLGPUFamilyMetal3 (5001)
ggml_metal_device_init: simdgroup reduction = true
ggml_metal_device_init: simdgroup matrix mul. = true
ggml_metal_device_init: has unified memory = true
ggml_metal_device_init: has bfloat = true
ggml_metal_device_init: has tensor = false
ggml_metal_device_init: use residency sets = true
ggml_metal_device_init: use shared buffers = true
ggml_metal_device_init: recommendedMaxWorkingSetSize = 11453.25 MB
whisper_init_with_params_no_state: devices = 3
whisper_init_with_params_no_state: backends = 3
whisper_model_load: loading model
whisper_model_load: n_vocab = 51865
whisper_model_load: n_audio_ctx = 1500
whisper_model_load: n_audio_state = 384
whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-05-14T09:25:08.714171Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38757
|
1437
|
40
|
2026-05-14T06:28:14.227870+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740094227_m1.jpg...
|
iTerm2
|
screenpipe"
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
ggml_metal_init: use concurrency = true
ggml_me ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.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-13T20:34:02.333860Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-13T20:35:59.996074Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.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-13T20:36:06.828724Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-13T20:36:08.344162Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for MacBook Pro Microphone (input)
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
2026-05-13T20:38:09.099371Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-13T20:38:37.344312Z 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=0 rows_returned=44 elapsed=5.107326084s
2026-05-13T20:38:37.346139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 44 eligible frames
2026-05-13T20:38:38.686723Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 5.1MB → 0.5MB (10.0x), 18 JPEGs deleted
2026-05-13T20:38:41.220417Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.4MB → 3.3MB (1.6x), 24 JPEGs deleted
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.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-13T20:40:11.364685Z 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 ~ $ alias sp-start
zsh: command not found: alias
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias sp-start
zsh: command not found: alias
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias
addssh='ssh-add ~/.ssh/*'
app='cd ~/jiminny/app'
cnt='docker exec -ti $(docker ps | grep worker | awk '\''{print $1}'\'') /bin/bash -c "cd /home/jiminny && bash"'
co='git checkout'
cov='./vendor/bin/phpunit tests/Unit --coverage-html=build/coverage'
csfix='make cs-fix'
dev='docker exec -ti $(docker ps -q --filter "name=docker_lamp_1") /bin/bash'
eu='ssh lukas@jiminny-eu-bastion -D [IP_ADDRESS]:7073 -L 7532:db:3306'
eues='ssh ubuntu@jiminny-eu-ecs1 -L 7960:vpc-activities7-e7pfbl7wojjjnvp7olfpudrgke.eu-west-1.es.amazonaws.com:80'
ext='nvm use 20 && cd ~/jiminny/extension-app && yarn build:dev && yarn preview'
fe='yarn && nvm use 24 && cd ~/jiminny/app/front-end && yarn build:watch'
fe3='cd ~/jiminny/app/front-end-vue3 && yarn build:watch:production'
gbr='git branch --sort=-committerdate'
gcb='git branch --show-current | pbcopy'
gs='git status'
hhh=history
hhs='history 0 | grep '
install_nano='apt-get update & apt-get install nano'
kar='cp -f ~/DEV/settings/goku-karabiner-settings/karabiner.edn ~/.config/karabiner.edn && goku'
ll='ls -la --color=tty'
lock='kill %1 2>/dev/null; sleep 1 && pmset displaysleepnow'
nas='ssh Adm1n@[IP_ADDRESS] -p22'
poetryshell='eval ""'
prod='ssh lukas@jiminny-prod-bastion -D [IP_ADDRESS]:7072 -L 7632:db:3306'
prodes='ssh ubuntu@jiminny-prod-ecs1 -L 7970:vpc-activities7-3o2zlrelmga5qicf2yxxwtx6bi.us-east-2.es.amazonaws.com:80'
prophet='cd ~/jiminny/app'
prophetdown='aws-vault exec staging -- bash -c "env | grep AWS_ > aws-creds.env && docker compose -f docker-compose.yml -f docker-compose.dev.yml down"'
prophetup='aws-vault exec staging -- bash -c "env | grep AWS_ > aws-creds.env && docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build"'
qa='ssh lukas@jiminny-qa-bastion -D [IP_ADDRESS]:7074 -L 7432:db:3306'
qaes='ssh ubuntu@jiminny-qa-ecs1 -L 7950:vpc-activities7-s5zchrs4xqcnav3rjzmxgxvfvq.us-east-2.es.amazonaws.com:80'
qai='ssh lukas@jiminny-qai-bastion -D [IP_ADDRESS]:7075 -L 7777:jiminny-db-qai.c3uemcm84st0.us-east-2.rds.amazonaws.com:3306'
rmbc='rm -rf bootstrap/cache/*.php'
run-help=man
sp-db='sqlite3 ~/.screenpipe/db.sqlite '
sp-start='npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"'
sp-status='curl -s [URL_WITH_CREDENTIALS] -D [IP_ADDRESS]:7071 -L 7732:db:3306'
stges='ssh ubuntu@jiminny-stage-ecs1 -L 7980:vpc-activities7-tgeodjeaugnaiigqgdcjjkrrj4.us-east-2.es.amazonaws.com:80'
veu='ssh jiminny-eu-ecs1'
veu10='ssh jiminny-eu-ecs10'
veu11='ssh jiminny-eu-ecs11'
veu12='ssh jiminny-eu-ecs12'
veu2='ssh jiminny-eu-ecs2'
veu3='ssh jiminny-eu-ecs3'
veu4='ssh jiminny-eu-ecs4'
veu5='ssh jiminny-eu-ecs5'
veu6='ssh jiminny-eu-ecs6'
veu7='ssh jiminny-eu-ecs7'
veu8='ssh jiminny-eu-ecs8'
veu9='ssh jiminny-eu-ecs9'
vprod='ssh jiminny-prod-ecs1'
vprod10='ssh jiminny-prod-ecs10'
vprod11='ssh jiminny-prod-ecs11'
vprod12='ssh jiminny-prod-ecs12'
vprod2='ssh jiminny-prod-ecs2'
vprod3='ssh jiminny-prod-ecs3'
vprod4='ssh jiminny-prod-ecs4'
vprod5='ssh jiminny-prod-ecs5'
vprod6='ssh jiminny-prod-ecs6'
vprod7='ssh jiminny-prod-ecs7'
vprod8='ssh jiminny-prod-ecs8'
vprod9='ssh jiminny-prod-ecs9'
vqa='ssh jiminny-qa-ecs1'
vqa2='ssh jiminny-qa-ecs2'
vqai='ssh jiminny-qai-ecs1'
vqai2='ssh jiminny-qai-ecs2'
vstage='ssh ec2-user@jiminny-subenv-worker-app0'
vstg='ssh jiminny-stage-ecs1'
vstg2='ssh ubuntu@jiminny-stage-ecs2'
which-command=whence
work='cd ~/jiminny/infrastructure/dev/docker && docker compose up'
workoff='kill %1'
workon='caffeinate -d & echo "Display sleep disabled (PID $!)"'
xd='make docker-xdebug-disable'
xe='make docker-xdebug-enable'
zp='nano ~/.zprofile'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-05-14T09:24:57.412901Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
microphone: ok
accessibility: ok
2026-05-14T09:24:57.504235Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-05-14T09:24:58.108327Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-05-14T09:24:58.110039Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-05-14T09:24:58.110396Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-05-14T09:24:58.131971Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-05-14T09:24:58.132049Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-05-14T09:24:58.543048Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-05-14T09:24:58.543106Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-05-14T09:24:58.542983Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-05-14T09:24:58.542992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-05-14T09:24:58.543188Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-05-14T09:24:58.545885Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-05-14T09:24:58.546638Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-05-14T09:24:58.546795Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-05-14T09:24:58.547356Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-05-14T09:24:58.547453Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-05-14T09:24:58.547767Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-05-14T09:24:58.547888Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
2026-05-14T09:24:58.550735Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
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 │ │
│ │ soundcore AeroClip (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-14T09:24:58.552083Z INFO screenpipe: starting UI event capture
2026-05-14T09:24:58.555587Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
2026-05-14T09:24:58.557961Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-05-14T09:24:58.568371Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-05-14T09:24:58.584826Z INFO screenpipe: text-PII worker skipped at startup — async_pii_redaction=false. OPF model (~2.8 GB) will NOT be downloaded or loaded. Toggle via Settings → Privacy → AI PII removal.
2026-05-14T09:24:58.584861Z INFO screenpipe: image-PII worker skipped at startup — async_image_pii_redaction=false. rfdetr_v9 model (~108 MB) will NOT be downloaded or loaded. Toggle via Settings → Privacy → AI PII removal.
2026-05-14T09:24:58.584915Z INFO screenpipe_engine::ui_recorder: UI recording session started: 25f92ee5-c210-4bb0-aa44-4054d2351b03
2026-05-14T09:24:58.584978Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-05-14T09:24:58.585134Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-05-13 06:24:58.585133 UTC to 2026-05-14 06:24:58.585133 UTC)
2026-05-14T09:24:58.585862Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-05-14T09:24:58.594987Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-05-14T09:24:58.599110Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-05-14T09:24:58.699260Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-05-14T09:24:58.699315Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-05-14T09:24:58.699350Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-05-14T09:24:58.746653Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (3008x1253)
2026-05-14T09:24:58.746781Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-05-14T09:24:58.746794Z INFO screenpipe_engine::vision_manager::manager: VisionManager started with 2/2 monitor(s)
2026-05-14T09:24:58.746801Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s backstop poll)
2026-05-14T09:24:58.746815Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-05-14T09:24:59.307089Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 0 excluded)
2026-05-14T09:24:59.416921Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 0 excluded)
2026-05-14T09:24:59.478046Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=38633, dur=113ms
2026-05-14T09:24:59.615567Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=38634, dur=139ms
2026-05-14T09:25:04.109913Z 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 frames f\n LEFT JOIN video_chunks vc ON f.video_chunk_id = vc.id\nWHERE\n f.timestamp >= ?1\n AND f.timestamp <= ?2\n AND COALESCE(vc.file_path, f.snapshot_path, '') NOT LIKE 'cloud://%'\nORDER BY\n f.timestamp DESC,\n f.offset_index DESC\nLIMIT\n 10000\n" rows_affected=0 rows_returned=9423 elapsed=5.524093667s
2026-05-14T09:25:04.143960Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 9423 frame entries, coverage from 2026-05-13 06:24:58.585133 UTC
2026-05-14T09:25:08.557254Z INFO screenpipe_audio::transcription::engine: whisper model available: "/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin"
2026-05-14T09:25:08.557399Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)
2026-05-14T09:25:08.557427Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...
whisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'
whisper_init_with_params_no_state: use gpu = 1
whisper_init_with_params_no_state: flash attn = 0
whisper_init_with_params_no_state: gpu_device = 0
whisper_init_with_params_no_state: dtw = 0
ggml_metal_device_init: tensor API disabled for pre-M5 and pre-A19 devices
ggml_metal_library_init: using embedded metal library
ggml_metal_library_init: loaded in 0.045 sec
ggml_metal_rsets_init: creating a residency set collection (keep_alive = 180 s)
ggml_metal_device_init: GPU name: Apple M1
ggml_metal_device_init: GPU family: MTLGPUFamilyApple7 (1007)
ggml_metal_device_init: GPU family: MTLGPUFamilyCommon3 (3003)
ggml_metal_device_init: GPU family: MTLGPUFamilyMetal3 (5001)
ggml_metal_device_init: simdgroup reduction = true
ggml_metal_device_init: simdgroup matrix mul. = true
ggml_metal_device_init: has unified memory = true
ggml_metal_device_init: has bfloat = true
ggml_metal_device_init: has tensor = false
ggml_metal_device_init: use residency sets = true
ggml_metal_device_init: use shared buffers = true
ggml_metal_device_init: recommendedMaxWorkingSetSize = 11453.25 MB
whisper_init_with_params_no_state: devices = 3
whisper_init_with_params_no_state: backends = 3
whisper_model_load: loading model
whisper_model_load: n_vocab = 51865
whisper_model_load: n_audio_ctx = 1500
whisper_model_load: n_audio_state = 384
whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-05-14T09:25:08.714171Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"ggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:34:02.333860Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:35:59.996074Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:36:06.828724Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:36:08.344162Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for MacBook Pro Microphone (input)\n\n tip: sign in for higher AI quotas + cloud sync:\n screenpipe login\n\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:38:09.099371Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:38:37.344312Z 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=0 rows_returned=44 elapsed=5.107326084s\n2026-05-13T20:38:37.346139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 44 eligible frames\n2026-05-13T20:38:38.686723Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 5.1MB → 0.5MB (10.0x), 18 JPEGs deleted\n2026-05-13T20:38:41.220417Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.4MB → 3.3MB (1.6x), 24 JPEGs deleted\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:40:11.364685Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n\n tip: get the screenpipe desktop app for the full experience\n https://screenpi.pe\n\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:42:13.293671Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:43:42.753501Z 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=0 rows_returned=22 elapsed=1.527175333s\n2026-05-13T20:43:42.753626Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 22 eligible frames\n2026-05-13T20:43:43.862384Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.8MB → 0.5MB (5.8x), 10 JPEGs deleted\n2026-05-13T20:43:44.995456Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.0MB → 0.3MB (5.9x), 10 JPEGs deleted\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:44:15.490296Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:46:17.561354Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n\n tip: wire screenpipe into claude with one command:\n claude mcp add screenpipe -- npx -y screenpipe-mcp\n then ask claude to build a pipe that tracks who you are, your todos, and how you spend your time from your screen activity\n\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:48:19.446216Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:48:47.503128Z 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=0 rows_returned=11 elapsed=2.495709958s\n2026-05-13T20:48:47.503288Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 11 eligible frames\n2026-05-13T20:48:48.316165Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 1.4MB → 0.5MB (2.9x), 5 JPEGs deleted\n2026-05-13T20:48:48.942276Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 4 frames, 0.8MB → 0.3MB (2.4x), 4 JPEGs deleted\n2026-05-13T20:49:42.528723Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)\n2026-05-13T20:49:43.434142Z 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)\n2026-05-13T20:49:43.440276Z 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)\n2026-05-13T20:49:44.371959Z INFO screenpipe_engine::event_driven_capture: invalidating persistent streams after unlock/wake for monitor 1\n2026-05-13T20:49:44.767833Z WARN screenpipe_audio::audio_manager::device_monitor: [DEVICE_RECOVERY] detected stale recording handle for MacBook Pro Microphone (input), cleaning up for restart\n2026-05-13T20:49:44.767967Z INFO screenpipe_audio::device::device_manager: Stopping device: MacBook Pro Microphone (input)\n2026-05-13T20:49:44.785602Z INFO sck_rs::stream_manager: stopped 2 persistent stream(s)\n2026-05-13T20:49:45.364548Z INFO screenpipe_audio::device::device_manager: starting recording for device: MacBook Pro Microphone (input)\n2026-05-13T20:49:45.364628Z INFO screenpipe_audio::audio_manager::device_monitor: restarted with system default device: MacBook Pro Microphone (input)\n2026-05-13T20:49:45.364676Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for MacBook Pro Microphone (input) (wired / 30s segments)\n2026-05-13T20:49:46.278662Z WARN sqlx::query: summary=\"INSERT INTO frames ( …\" db.statement=\"\\n\\nINSERT INTO\\n frames (\\n video_chunk_id,\\n offset_index,\\n timestamp,\\n name,\\n browser_url,\\n app_name,\\n window_name,\\n focused,\\n device_name,\\n snapshot_path,\\n capture_trigger,\\n accessibility_text,\\n text_source,\\n accessibility_tree_json,\\n content_hash,\\n simhash,\\n full_text,\\n elements_ref_frame_id,\\n document_path\\n )\\nVALUES\\n (\\n NULL,\\n 0,\\n ?1,\\n ?2,\\n ?3,\\n ?4,\\n ?5,\\n ?6,\\n ?7,\\n ?8,\\n ?9,\\n ?10,\\n ?11,\\n ?12,\\n ?13,\\n ?14,\\n ?15,\\n ?16,\\n ?17\\n )\\n\" rows_affected=1 rows_returned=0 elapsed=1.244703625s\n2026-05-13T20:49:46.796019Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 0 excluded)\n2026-05-13T20:49:47.183906Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 0 excluded)\n2026-05-13T20:49:48.460135Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 96.4ms elapsed (expected 5.3ms) → inserting 91.1ms silence (8742 samples)\n2026-05-13T20:49:49.414321Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 115.3ms elapsed (expected 5.3ms) → inserting 109.9ms silence (10554 samples)\n2026-05-13T20:49:50.138185Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 123.4ms elapsed (expected 5.3ms) → inserting 118.1ms silence (11335 samples)\n2026-05-13T20:49:50.422739Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 82.2ms elapsed (expected 5.3ms) → inserting 76.9ms silence (7383 samples)\n2026-05-13T20:49:50.671835Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 249.1ms elapsed (expected 5.3ms) → inserting 243.8ms silence (23401 samples)\n2026-05-13T20:49:57.489211Z 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=430 elapsed=14.406079875s\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-05-13T20:50:25.337392Z 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=430 elapsed=1.06712725s\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:50:34.187500Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:50:40.135101Z 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=430 elapsed=1.170097666s\n\n tip: install a starter bundle of pipes:\n screenpipe install https://screenpi.pe/start.json\n\n2026-05-13T20:51:47.151342Z 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=432 elapsed=1.377976291s\nzsh: terminated npx screenpipe@latest record\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias sp-start\nzsh: command not found: alias\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias sp-start\nzsh: command not found: alias\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias\naddssh='ssh-add ~/.ssh/*'\napp='cd ~/jiminny/app'\ncnt='docker exec -ti $(docker ps | grep worker | awk '\\''{print $1}'\\'') /bin/bash -c \"cd /home/jiminny && bash\"'\nco='git checkout'\ncov='./vendor/bin/phpunit tests/Unit --coverage-html=build/coverage'\ncsfix='make cs-fix'\ndev='docker exec -ti $(docker ps -q --filter \"name=docker_lamp_1\") /bin/bash'\neu='ssh lukas@jiminny-eu-bastion -D 127.0.0.1:7073 -L 7532:db:3306'\neues='ssh ubuntu@jiminny-eu-ecs1 -L 7960:vpc-activities7-e7pfbl7wojjjnvp7olfpudrgke.eu-west-1.es.amazonaws.com:80'\next='nvm use 20 && cd ~/jiminny/extension-app && yarn build:dev && yarn preview'\nfe='yarn && nvm use 24 && cd ~/jiminny/app/front-end && yarn build:watch'\nfe3='cd ~/jiminny/app/front-end-vue3 && yarn build:watch:production'\ngbr='git branch --sort=-committerdate'\ngcb='git branch --show-current | pbcopy'\ngs='git status'\nhhh=history\nhhs='history 0 | grep '\ninstall_nano='apt-get update & apt-get install nano'\nkar='cp -f ~/DEV/settings/goku-karabiner-settings/karabiner.edn ~/.config/karabiner.edn && goku'\nll='ls -la --color=tty'\nlock='kill %1 2>/dev/null; sleep 1 && pmset displaysleepnow'\nnas='ssh Adm1n@192.168.0.242 -p22'\npoetryshell='eval \"\"'\nprod='ssh lukas@jiminny-prod-bastion -D 127.0.0.1:7072 -L 7632:db:3306'\nprodes='ssh ubuntu@jiminny-prod-ecs1 -L 7970:vpc-activities7-3o2zlrelmga5qicf2yxxwtx6bi.us-east-2.es.amazonaws.com:80'\nprophet='cd ~/jiminny/app'\nprophetdown='aws-vault exec staging -- bash -c \"env | grep AWS_ > aws-creds.env && docker compose -f docker-compose.yml -f docker-compose.dev.yml down\"'\nprophetup='aws-vault exec staging -- bash -c \"env | grep AWS_ > aws-creds.env && docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build\"'\nqa='ssh lukas@jiminny-qa-bastion -D 127.0.0.1:7074 -L 7432:db:3306'\nqaes='ssh ubuntu@jiminny-qa-ecs1 -L 7950:vpc-activities7-s5zchrs4xqcnav3rjzmxgxvfvq.us-east-2.es.amazonaws.com:80'\nqai='ssh lukas@jiminny-qai-bastion -D 127.0.0.1:7075 -L 7777:jiminny-db-qai.c3uemcm84st0.us-east-2.rds.amazonaws.com:3306'\nrmbc='rm -rf bootstrap/cache/*.php'\nrun-help=man\nsp-db='sqlite3 ~/.screenpipe/db.sqlite '\nsp-start='npx screenpipe@latest record --disable-audio --ignored-windows \"Boosteroid\"'\nsp-status='curl -s http://localhost:3030/health | jq \"{status, frame_status, audio_status, last_frame: .last_frame_timestamp, uptime: .pipeline.uptime_secs, fps: .pipeline.capture_fps_actual, frames: .pipeline.frames_captured}\"'\nsp-stop='pkill -f screenpipe && echo '\\''screenpipe stopped'\\'\nstg='ssh lukas@jiminny-stage-bastion -D 127.0.0.1:7071 -L 7732:db:3306'\nstges='ssh ubuntu@jiminny-stage-ecs1 -L 7980:vpc-activities7-tgeodjeaugnaiigqgdcjjkrrj4.us-east-2.es.amazonaws.com:80'\nveu='ssh jiminny-eu-ecs1'\nveu10='ssh jiminny-eu-ecs10'\nveu11='ssh jiminny-eu-ecs11'\nveu12='ssh jiminny-eu-ecs12'\nveu2='ssh jiminny-eu-ecs2'\nveu3='ssh jiminny-eu-ecs3'\nveu4='ssh jiminny-eu-ecs4'\nveu5='ssh jiminny-eu-ecs5'\nveu6='ssh jiminny-eu-ecs6'\nveu7='ssh jiminny-eu-ecs7'\nveu8='ssh jiminny-eu-ecs8'\nveu9='ssh jiminny-eu-ecs9'\nvprod='ssh jiminny-prod-ecs1'\nvprod10='ssh jiminny-prod-ecs10'\nvprod11='ssh jiminny-prod-ecs11'\nvprod12='ssh jiminny-prod-ecs12'\nvprod2='ssh jiminny-prod-ecs2'\nvprod3='ssh jiminny-prod-ecs3'\nvprod4='ssh jiminny-prod-ecs4'\nvprod5='ssh jiminny-prod-ecs5'\nvprod6='ssh jiminny-prod-ecs6'\nvprod7='ssh jiminny-prod-ecs7'\nvprod8='ssh jiminny-prod-ecs8'\nvprod9='ssh jiminny-prod-ecs9'\nvqa='ssh jiminny-qa-ecs1'\nvqa2='ssh jiminny-qa-ecs2'\nvqai='ssh jiminny-qai-ecs1'\nvqai2='ssh jiminny-qai-ecs2'\nvstage='ssh ec2-user@jiminny-subenv-worker-app0'\nvstg='ssh jiminny-stage-ecs1'\nvstg2='ssh ubuntu@jiminny-stage-ecs2'\nwhich-command=whence\nwork='cd ~/jiminny/infrastructure/dev/docker && docker compose up'\nworkoff='kill %1'\nworkon='caffeinate -d & echo \"Display sleep disabled (PID $!)\"'\nxd='make docker-xdebug-disable'\nxe='make docker-xdebug-enable'\nzp='nano ~/.zprofile'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record\ndetected hardware tier: Mid\nwarning: parakeet is not supported on this platform, using whisper-tiny instead\n2026-05-14T09:24:57.412901Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store\nchecking permissions...\n screen recording: ok\n microphone: ok\n accessibility: ok\n2026-05-14T09:24:57.504235Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6\n2026-05-14T09:24:58.108327Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor\n2026-05-14T09:24:58.110039Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)\n2026-05-14T09:24:58.110396Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)\n2026-05-14T09:24:58.131971Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true\n2026-05-14T09:24:58.132049Z INFO screenpipe: meeting detector enabled — independent of transcription mode\n2026-05-14T09:24:58.543048Z INFO screenpipe: API server listening on 127.0.0.1:3030 (localhost only)\n2026-05-14T09:24:58.543106Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key\n2026-05-14T09:24:58.542983Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)\n2026-05-14T09:24:58.542992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)\n2026-05-14T09:24:58.543188Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager\n2026-05-14T09:24:58.545885Z INFO screenpipe_core::pipes: loaded pipe: day-recap\n2026-05-14T09:24:58.546638Z INFO screenpipe_core::pipes: loaded pipe: standup-update\n2026-05-14T09:24:58.546795Z INFO screenpipe_core::pipes: loaded pipe: ai-habits\n2026-05-14T09:24:58.547356Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown\n2026-05-14T09:24:58.547453Z INFO screenpipe_core::pipes: loaded pipe: video-export\n2026-05-14T09:24:58.547767Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary\n2026-05-14T09:24:58.547888Z INFO screenpipe_core::pipes: loaded 6 pipes from \"/Users/lukas/.screenpipe/pipes\"\n\n\n\n _ \n __________________ ___ ____ ____ (_____ ___ \n / ___/ ___/ ___/ _ \\/ _ \\/ __ \\ / __ \\/ / __ \\/ _ \\\n (__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/\n/____/\\___/_/ \\___/\\___/_/ /_/ / .___/_/ .___/\\___/ \n /_/ /_/ \n\n\n\npower AI by everything you've seen, said or heard\n2026-05-14T09:24:58.550735Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)\nopen source | runs locally | developer friendly\n\n\n┌────────────────────────┬────────────────────────────────────┐\n│ setting │ value │\n├────────────────────────┼────────────────────────────────────┤\n│ audio chunk duration │ 30 seconds │\n│ port │ 3030 │\n│ audio disabled │ false │\n│ vision disabled │ false │\n│ pause on DRM content │ false │\n│ audio engine │ Parakeet │\n│ vad engine │ Silero │\n│ data directory │ /Users/lukas/.screenpipe │\n│ debug mode │ false │\n│ telemetry │ true │\n│ use pii removal │ true │\n│ use all monitors │ true │\n│ ignored windows │ [] │\n│ included windows │ [] │\n│ cloud sync │ disabled │\n│ auto-destruct pid │ 0 │\n│ deepgram key │ not set │\n│ api auth │ enabled │\n│ encrypt secrets │ disabled │\n│ retention days │ 14 │\n│ retention mode │ media-only (keep transcripts) │\n├────────────────────────┼────────────────────────────────────┤\n│ languages │ │\n│ │ all languages │\n├────────────────────────┼────────────────────────────────────┤\n│ monitors │ │\n│ │ id: 1 │\n│ │ id: 2 │\n├────────────────────────┼────────────────────────────────────┤\n│ audio devices │ │\n│ │ soundcore AeroClip (input) │\n│ │ System Audio (output) │\n└────────────────────────┴────────────────────────────────────┘\nyou are using local processing. all your data stays on your computer.\n\nwarning: telemetry is enabled. only error-level data will be sent.\nto disable, use the --disable-telemetry flag.\n\ncheck latest changes here: https://github.com/screenpipe/screenpipe/releases\n2026-05-14T09:24:58.552083Z INFO screenpipe: starting UI event capture\n2026-05-14T09:24:58.555587Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh\n2026-05-14T09:24:58.557961Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))\n2026-05-14T09:24:58.568371Z INFO screenpipe_engine::ui_recorder: Starting UI event capture\n2026-05-14T09:24:58.584826Z INFO screenpipe: text-PII worker skipped at startup — async_pii_redaction=false. OPF model (~2.8 GB) will NOT be downloaded or loaded. Toggle via Settings → Privacy → AI PII removal.\n2026-05-14T09:24:58.584861Z INFO screenpipe: image-PII worker skipped at startup — async_image_pii_redaction=false. rfdetr_v9 model (~108 MB) will NOT be downloaded or loaded. Toggle via Settings → Privacy → AI PII removal.\n2026-05-14T09:24:58.584915Z INFO screenpipe_engine::ui_recorder: UI recording session started: 25f92ee5-c210-4bb0-aa44-4054d2351b03\n2026-05-14T09:24:58.584978Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)\n2026-05-14T09:24:58.585134Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-05-13 06:24:58.585133 UTC to 2026-05-14 06:24:58.585133 UTC)\n2026-05-14T09:24:58.585862Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)\n2026-05-14T09:24:58.594987Z INFO screenpipe_engine::server: Server listening on 127.0.0.1:3030\n2026-05-14T09:24:58.599110Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030\n2026-05-14T09:24:58.699260Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)\n2026-05-14T09:24:58.699315Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)\n2026-05-14T09:24:58.699350Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)\n2026-05-14T09:24:58.746653Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (3008x1253)\n2026-05-14T09:24:58.746781Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)\n2026-05-14T09:24:58.746794Z INFO screenpipe_engine::vision_manager::manager: VisionManager started with 2/2 monitor(s)\n2026-05-14T09:24:58.746801Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s backstop poll)\n2026-05-14T09:24:58.746815Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)\n2026-05-14T09:24:59.307089Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 0 excluded)\n2026-05-14T09:24:59.416921Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 0 excluded)\n2026-05-14T09:24:59.478046Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=38633, dur=113ms\n2026-05-14T09:24:59.615567Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=38634, dur=139ms\n2026-05-14T09:25:04.109913Z 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 frames f\\n LEFT JOIN video_chunks vc ON f.video_chunk_id = vc.id\\nWHERE\\n f.timestamp >= ?1\\n AND f.timestamp <= ?2\\n AND COALESCE(vc.file_path, f.snapshot_path, '') NOT LIKE 'cloud://%'\\nORDER BY\\n f.timestamp DESC,\\n f.offset_index DESC\\nLIMIT\\n 10000\\n\" rows_affected=0 rows_returned=9423 elapsed=5.524093667s\n2026-05-14T09:25:04.143960Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 9423 frame entries, coverage from 2026-05-13 06:24:58.585133 UTC\n2026-05-14T09:25:08.557254Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-05-14T09:25:08.557399Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-05-14T09:25:08.557427Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nggml_metal_device_init: tensor API disabled for pre-M5 and pre-A19 devices\nggml_metal_library_init: using embedded metal library\nggml_metal_library_init: loaded in 0.045 sec\nggml_metal_rsets_init: creating a residency set collection (keep_alive = 180 s)\nggml_metal_device_init: GPU name: Apple M1\nggml_metal_device_init: GPU family: MTLGPUFamilyApple7 (1007)\nggml_metal_device_init: GPU family: MTLGPUFamilyCommon3 (3003)\nggml_metal_device_init: GPU family: MTLGPUFamilyMetal3 (5001)\nggml_metal_device_init: simdgroup reduction = true\nggml_metal_device_init: simdgroup matrix mul. = true\nggml_metal_device_init: has unified memory = true\nggml_metal_device_init: has bfloat = true\nggml_metal_device_init: has tensor = false\nggml_metal_device_init: use residency sets = true\nggml_metal_device_init: use shared buffers = true\nggml_metal_device_init: recommendedMaxWorkingSetSize = 11453.25 MB\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-05-14T09:25:08.714171Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-05-14T09:25:08.721297Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-05-14T09:25:08.727575Z INFO screenpipe_audio::audio_manager::manager: seeded 21 speakers (named + unnamed) from DB into embedding manager\n2026-05-14T09:25:08.727664Z INFO screenpipe_audio::audio_manager::manager: audio manager started\n2026-05-14T09:25:08.727731Z INFO screenpipe_audio::audio_manager::manager: calendar-assisted speaker diarization: listening for meeting events\n2026-05-14T09:25:09.238925Z INFO screenpipe_audio::device::device_manager: starting recording for device: System Audio (output)\n2026-05-14T09:25:09.325492Z INFO screenpipe_audio::device::device_manager: starting recording for device: soundcore AeroClip (input)\n2026-05-14T09:25:09.326604Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for soundcore AeroClip (input) (bluetooth / 30s segments)\n2026-05-14T09:25:09.326657Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for System Audio (output) (unknown / 30s segments)\n2026-05-14T09:25:16.929049Z WARN screenpipe_a11y::tree::macos_lines: lines: AXUIElementCopyParameterizedAttributeValue(AXLineForIndex) failed status=os::Status { raw: -25212, fcc: \"....\", help: \"https://www.osstatus.com?search=-25212\" } — first failure (further failures suppressed); search highlights will fall back to paragraph bbox on this app\n2026-05-14T09:25:42.118426Z INFO screenpipe_audio::transcription::handle_new_transcript: device System Audio (output) skipping duplicate transcript (entire content overlaps with previous)\n2026-05-14T09:26:02.676206Z 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=0 rows_returned=56 elapsed=4.131920875s\n2026-05-14T09:26:02.676359Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 56 eligible frames\n2026-05-14T09:26:04.733866Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 29 frames, 4.0MB → 1.9MB (2.1x), 29 JPEGs deleted\n2026-05-14T09:26:06.932633Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.3MB → 2.2MB (2.0x), 25 JPEGs deleted\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-14T09:27:10.299675Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks","depth":4,"on_screen":true,"value":"ggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:34:02.333860Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:35:59.996074Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:36:06.828724Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:36:08.344162Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for MacBook Pro Microphone (input)\n\n tip: sign in for higher AI quotas + cloud sync:\n screenpipe login\n\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:38:09.099371Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:38:37.344312Z 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=0 rows_returned=44 elapsed=5.107326084s\n2026-05-13T20:38:37.346139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 44 eligible frames\n2026-05-13T20:38:38.686723Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 5.1MB → 0.5MB (10.0x), 18 JPEGs deleted\n2026-05-13T20:38:41.220417Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.4MB → 3.3MB (1.6x), 24 JPEGs deleted\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:40:11.364685Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n\n tip: get the screenpipe desktop app for the full experience\n https://screenpi.pe\n\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:42:13.293671Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:43:42.753501Z 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=0 rows_returned=22 elapsed=1.527175333s\n2026-05-13T20:43:42.753626Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 22 eligible frames\n2026-05-13T20:43:43.862384Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.8MB → 0.5MB (5.8x), 10 JPEGs deleted\n2026-05-13T20:43:44.995456Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.0MB → 0.3MB (5.9x), 10 JPEGs deleted\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:44:15.490296Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:46:17.561354Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n\n tip: wire screenpipe into claude with one command:\n claude mcp add screenpipe -- npx -y screenpipe-mcp\n then ask claude to build a pipe that tracks who you are, your todos, and how you spend your time from your screen activity\n\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:48:19.446216Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:48:47.503128Z 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=0 rows_returned=11 elapsed=2.495709958s\n2026-05-13T20:48:47.503288Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 11 eligible frames\n2026-05-13T20:48:48.316165Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 1.4MB → 0.5MB (2.9x), 5 JPEGs deleted\n2026-05-13T20:48:48.942276Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 4 frames, 0.8MB → 0.3MB (2.4x), 4 JPEGs deleted\n2026-05-13T20:49:42.528723Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)\n2026-05-13T20:49:43.434142Z 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)\n2026-05-13T20:49:43.440276Z 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)\n2026-05-13T20:49:44.371959Z INFO screenpipe_engine::event_driven_capture: invalidating persistent streams after unlock/wake for monitor 1\n2026-05-13T20:49:44.767833Z WARN screenpipe_audio::audio_manager::device_monitor: [DEVICE_RECOVERY] detected stale recording handle for MacBook Pro Microphone (input), cleaning up for restart\n2026-05-13T20:49:44.767967Z INFO screenpipe_audio::device::device_manager: Stopping device: MacBook Pro Microphone (input)\n2026-05-13T20:49:44.785602Z INFO sck_rs::stream_manager: stopped 2 persistent stream(s)\n2026-05-13T20:49:45.364548Z INFO screenpipe_audio::device::device_manager: starting recording for device: MacBook Pro Microphone (input)\n2026-05-13T20:49:45.364628Z INFO screenpipe_audio::audio_manager::device_monitor: restarted with system default device: MacBook Pro Microphone (input)\n2026-05-13T20:49:45.364676Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for MacBook Pro Microphone (input) (wired / 30s segments)\n2026-05-13T20:49:46.278662Z WARN sqlx::query: summary=\"INSERT INTO frames ( …\" db.statement=\"\\n\\nINSERT INTO\\n frames (\\n video_chunk_id,\\n offset_index,\\n timestamp,\\n name,\\n browser_url,\\n app_name,\\n window_name,\\n focused,\\n device_name,\\n snapshot_path,\\n capture_trigger,\\n accessibility_text,\\n text_source,\\n accessibility_tree_json,\\n content_hash,\\n simhash,\\n full_text,\\n elements_ref_frame_id,\\n document_path\\n )\\nVALUES\\n (\\n NULL,\\n 0,\\n ?1,\\n ?2,\\n ?3,\\n ?4,\\n ?5,\\n ?6,\\n ?7,\\n ?8,\\n ?9,\\n ?10,\\n ?11,\\n ?12,\\n ?13,\\n ?14,\\n ?15,\\n ?16,\\n ?17\\n )\\n\" rows_affected=1 rows_returned=0 elapsed=1.244703625s\n2026-05-13T20:49:46.796019Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 0 excluded)\n2026-05-13T20:49:47.183906Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 0 excluded)\n2026-05-13T20:49:48.460135Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 96.4ms elapsed (expected 5.3ms) → inserting 91.1ms silence (8742 samples)\n2026-05-13T20:49:49.414321Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 115.3ms elapsed (expected 5.3ms) → inserting 109.9ms silence (10554 samples)\n2026-05-13T20:49:50.138185Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 123.4ms elapsed (expected 5.3ms) → inserting 118.1ms silence (11335 samples)\n2026-05-13T20:49:50.422739Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 82.2ms elapsed (expected 5.3ms) → inserting 76.9ms silence (7383 samples)\n2026-05-13T20:49:50.671835Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 249.1ms elapsed (expected 5.3ms) → inserting 243.8ms silence (23401 samples)\n2026-05-13T20:49:57.489211Z 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=430 elapsed=14.406079875s\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-05-13T20:50:25.337392Z 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=430 elapsed=1.06712725s\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-13T20:50:34.187500Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks\n2026-05-13T20:50:40.135101Z 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=430 elapsed=1.170097666s\n\n tip: install a starter bundle of pipes:\n screenpipe install https://screenpi.pe/start.json\n\n2026-05-13T20:51:47.151342Z 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=432 elapsed=1.377976291s\nzsh: terminated npx screenpipe@latest record\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias sp-start\nzsh: command not found: alias\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias sp-start\nzsh: command not found: alias\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias\naddssh='ssh-add ~/.ssh/*'\napp='cd ~/jiminny/app'\ncnt='docker exec -ti $(docker ps | grep worker | awk '\\''{print $1}'\\'') /bin/bash -c \"cd /home/jiminny && bash\"'\nco='git checkout'\ncov='./vendor/bin/phpunit tests/Unit --coverage-html=build/coverage'\ncsfix='make cs-fix'\ndev='docker exec -ti $(docker ps -q --filter \"name=docker_lamp_1\") /bin/bash'\neu='ssh lukas@jiminny-eu-bastion -D 127.0.0.1:7073 -L 7532:db:3306'\neues='ssh ubuntu@jiminny-eu-ecs1 -L 7960:vpc-activities7-e7pfbl7wojjjnvp7olfpudrgke.eu-west-1.es.amazonaws.com:80'\next='nvm use 20 && cd ~/jiminny/extension-app && yarn build:dev && yarn preview'\nfe='yarn && nvm use 24 && cd ~/jiminny/app/front-end && yarn build:watch'\nfe3='cd ~/jiminny/app/front-end-vue3 && yarn build:watch:production'\ngbr='git branch --sort=-committerdate'\ngcb='git branch --show-current | pbcopy'\ngs='git status'\nhhh=history\nhhs='history 0 | grep '\ninstall_nano='apt-get update & apt-get install nano'\nkar='cp -f ~/DEV/settings/goku-karabiner-settings/karabiner.edn ~/.config/karabiner.edn && goku'\nll='ls -la --color=tty'\nlock='kill %1 2>/dev/null; sleep 1 && pmset displaysleepnow'\nnas='ssh Adm1n@192.168.0.242 -p22'\npoetryshell='eval \"\"'\nprod='ssh lukas@jiminny-prod-bastion -D 127.0.0.1:7072 -L 7632:db:3306'\nprodes='ssh ubuntu@jiminny-prod-ecs1 -L 7970:vpc-activities7-3o2zlrelmga5qicf2yxxwtx6bi.us-east-2.es.amazonaws.com:80'\nprophet='cd ~/jiminny/app'\nprophetdown='aws-vault exec staging -- bash -c \"env | grep AWS_ > aws-creds.env && docker compose -f docker-compose.yml -f docker-compose.dev.yml down\"'\nprophetup='aws-vault exec staging -- bash -c \"env | grep AWS_ > aws-creds.env && docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build\"'\nqa='ssh lukas@jiminny-qa-bastion -D 127.0.0.1:7074 -L 7432:db:3306'\nqaes='ssh ubuntu@jiminny-qa-ecs1 -L 7950:vpc-activities7-s5zchrs4xqcnav3rjzmxgxvfvq.us-east-2.es.amazonaws.com:80'\nqai='ssh lukas@jiminny-qai-bastion -D 127.0.0.1:7075 -L 7777:jiminny-db-qai.c3uemcm84st0.us-east-2.rds.amazonaws.com:3306'\nrmbc='rm -rf bootstrap/cache/*.php'\nrun-help=man\nsp-db='sqlite3 ~/.screenpipe/db.sqlite '\nsp-start='npx screenpipe@latest record --disable-audio --ignored-windows \"Boosteroid\"'\nsp-status='curl -s http://localhost:3030/health | jq \"{status, frame_status, audio_status, last_frame: .last_frame_timestamp, uptime: .pipeline.uptime_secs, fps: .pipeline.capture_fps_actual, frames: .pipeline.frames_captured}\"'\nsp-stop='pkill -f screenpipe && echo '\\''screenpipe stopped'\\'\nstg='ssh lukas@jiminny-stage-bastion -D 127.0.0.1:7071 -L 7732:db:3306'\nstges='ssh ubuntu@jiminny-stage-ecs1 -L 7980:vpc-activities7-tgeodjeaugnaiigqgdcjjkrrj4.us-east-2.es.amazonaws.com:80'\nveu='ssh jiminny-eu-ecs1'\nveu10='ssh jiminny-eu-ecs10'\nveu11='ssh jiminny-eu-ecs11'\nveu12='ssh jiminny-eu-ecs12'\nveu2='ssh jiminny-eu-ecs2'\nveu3='ssh jiminny-eu-ecs3'\nveu4='ssh jiminny-eu-ecs4'\nveu5='ssh jiminny-eu-ecs5'\nveu6='ssh jiminny-eu-ecs6'\nveu7='ssh jiminny-eu-ecs7'\nveu8='ssh jiminny-eu-ecs8'\nveu9='ssh jiminny-eu-ecs9'\nvprod='ssh jiminny-prod-ecs1'\nvprod10='ssh jiminny-prod-ecs10'\nvprod11='ssh jiminny-prod-ecs11'\nvprod12='ssh jiminny-prod-ecs12'\nvprod2='ssh jiminny-prod-ecs2'\nvprod3='ssh jiminny-prod-ecs3'\nvprod4='ssh jiminny-prod-ecs4'\nvprod5='ssh jiminny-prod-ecs5'\nvprod6='ssh jiminny-prod-ecs6'\nvprod7='ssh jiminny-prod-ecs7'\nvprod8='ssh jiminny-prod-ecs8'\nvprod9='ssh jiminny-prod-ecs9'\nvqa='ssh jiminny-qa-ecs1'\nvqa2='ssh jiminny-qa-ecs2'\nvqai='ssh jiminny-qai-ecs1'\nvqai2='ssh jiminny-qai-ecs2'\nvstage='ssh ec2-user@jiminny-subenv-worker-app0'\nvstg='ssh jiminny-stage-ecs1'\nvstg2='ssh ubuntu@jiminny-stage-ecs2'\nwhich-command=whence\nwork='cd ~/jiminny/infrastructure/dev/docker && docker compose up'\nworkoff='kill %1'\nworkon='caffeinate -d & echo \"Display sleep disabled (PID $!)\"'\nxd='make docker-xdebug-disable'\nxe='make docker-xdebug-enable'\nzp='nano ~/.zprofile'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record\ndetected hardware tier: Mid\nwarning: parakeet is not supported on this platform, using whisper-tiny instead\n2026-05-14T09:24:57.412901Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store\nchecking permissions...\n screen recording: ok\n microphone: ok\n accessibility: ok\n2026-05-14T09:24:57.504235Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6\n2026-05-14T09:24:58.108327Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor\n2026-05-14T09:24:58.110039Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)\n2026-05-14T09:24:58.110396Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)\n2026-05-14T09:24:58.131971Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true\n2026-05-14T09:24:58.132049Z INFO screenpipe: meeting detector enabled — independent of transcription mode\n2026-05-14T09:24:58.543048Z INFO screenpipe: API server listening on 127.0.0.1:3030 (localhost only)\n2026-05-14T09:24:58.543106Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key\n2026-05-14T09:24:58.542983Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)\n2026-05-14T09:24:58.542992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)\n2026-05-14T09:24:58.543188Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager\n2026-05-14T09:24:58.545885Z INFO screenpipe_core::pipes: loaded pipe: day-recap\n2026-05-14T09:24:58.546638Z INFO screenpipe_core::pipes: loaded pipe: standup-update\n2026-05-14T09:24:58.546795Z INFO screenpipe_core::pipes: loaded pipe: ai-habits\n2026-05-14T09:24:58.547356Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown\n2026-05-14T09:24:58.547453Z INFO screenpipe_core::pipes: loaded pipe: video-export\n2026-05-14T09:24:58.547767Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary\n2026-05-14T09:24:58.547888Z INFO screenpipe_core::pipes: loaded 6 pipes from \"/Users/lukas/.screenpipe/pipes\"\n\n\n\n _ \n __________________ ___ ____ ____ (_____ ___ \n / ___/ ___/ ___/ _ \\/ _ \\/ __ \\ / __ \\/ / __ \\/ _ \\\n (__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/\n/____/\\___/_/ \\___/\\___/_/ /_/ / .___/_/ .___/\\___/ \n /_/ /_/ \n\n\n\npower AI by everything you've seen, said or heard\n2026-05-14T09:24:58.550735Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)\nopen source | runs locally | developer friendly\n\n\n┌────────────────────────┬────────────────────────────────────┐\n│ setting │ value │\n├────────────────────────┼────────────────────────────────────┤\n│ audio chunk duration │ 30 seconds │\n│ port │ 3030 │\n│ audio disabled │ false │\n│ vision disabled │ false │\n│ pause on DRM content │ false │\n│ audio engine │ Parakeet │\n│ vad engine │ Silero │\n│ data directory │ /Users/lukas/.screenpipe │\n│ debug mode │ false │\n│ telemetry │ true │\n│ use pii removal │ true │\n│ use all monitors │ true │\n│ ignored windows │ [] │\n│ included windows │ [] │\n│ cloud sync │ disabled │\n│ auto-destruct pid │ 0 │\n│ deepgram key │ not set │\n│ api auth │ enabled │\n│ encrypt secrets │ disabled │\n│ retention days │ 14 │\n│ retention mode │ media-only (keep transcripts) │\n├────────────────────────┼────────────────────────────────────┤\n│ languages │ │\n│ │ all languages │\n├────────────────────────┼────────────────────────────────────┤\n│ monitors │ │\n│ │ id: 1 │\n│ │ id: 2 │\n├────────────────────────┼────────────────────────────────────┤\n│ audio devices │ │\n│ │ soundcore AeroClip (input) │\n│ │ System Audio (output) │\n└────────────────────────┴────────────────────────────────────┘\nyou are using local processing. all your data stays on your computer.\n\nwarning: telemetry is enabled. only error-level data will be sent.\nto disable, use the --disable-telemetry flag.\n\ncheck latest changes here: https://github.com/screenpipe/screenpipe/releases\n2026-05-14T09:24:58.552083Z INFO screenpipe: starting UI event capture\n2026-05-14T09:24:58.555587Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh\n2026-05-14T09:24:58.557961Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))\n2026-05-14T09:24:58.568371Z INFO screenpipe_engine::ui_recorder: Starting UI event capture\n2026-05-14T09:24:58.584826Z INFO screenpipe: text-PII worker skipped at startup — async_pii_redaction=false. OPF model (~2.8 GB) will NOT be downloaded or loaded. Toggle via Settings → Privacy → AI PII removal.\n2026-05-14T09:24:58.584861Z INFO screenpipe: image-PII worker skipped at startup — async_image_pii_redaction=false. rfdetr_v9 model (~108 MB) will NOT be downloaded or loaded. Toggle via Settings → Privacy → AI PII removal.\n2026-05-14T09:24:58.584915Z INFO screenpipe_engine::ui_recorder: UI recording session started: 25f92ee5-c210-4bb0-aa44-4054d2351b03\n2026-05-14T09:24:58.584978Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)\n2026-05-14T09:24:58.585134Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-05-13 06:24:58.585133 UTC to 2026-05-14 06:24:58.585133 UTC)\n2026-05-14T09:24:58.585862Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)\n2026-05-14T09:24:58.594987Z INFO screenpipe_engine::server: Server listening on 127.0.0.1:3030\n2026-05-14T09:24:58.599110Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030\n2026-05-14T09:24:58.699260Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)\n2026-05-14T09:24:58.699315Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)\n2026-05-14T09:24:58.699350Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)\n2026-05-14T09:24:58.746653Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (3008x1253)\n2026-05-14T09:24:58.746781Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)\n2026-05-14T09:24:58.746794Z INFO screenpipe_engine::vision_manager::manager: VisionManager started with 2/2 monitor(s)\n2026-05-14T09:24:58.746801Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s backstop poll)\n2026-05-14T09:24:58.746815Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)\n2026-05-14T09:24:59.307089Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 0 excluded)\n2026-05-14T09:24:59.416921Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 0 excluded)\n2026-05-14T09:24:59.478046Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=38633, dur=113ms\n2026-05-14T09:24:59.615567Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=38634, dur=139ms\n2026-05-14T09:25:04.109913Z 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 frames f\\n LEFT JOIN video_chunks vc ON f.video_chunk_id = vc.id\\nWHERE\\n f.timestamp >= ?1\\n AND f.timestamp <= ?2\\n AND COALESCE(vc.file_path, f.snapshot_path, '') NOT LIKE 'cloud://%'\\nORDER BY\\n f.timestamp DESC,\\n f.offset_index DESC\\nLIMIT\\n 10000\\n\" rows_affected=0 rows_returned=9423 elapsed=5.524093667s\n2026-05-14T09:25:04.143960Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 9423 frame entries, coverage from 2026-05-13 06:24:58.585133 UTC\n2026-05-14T09:25:08.557254Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-05-14T09:25:08.557399Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-05-14T09:25:08.557427Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nggml_metal_device_init: tensor API disabled for pre-M5 and pre-A19 devices\nggml_metal_library_init: using embedded metal library\nggml_metal_library_init: loaded in 0.045 sec\nggml_metal_rsets_init: creating a residency set collection (keep_alive = 180 s)\nggml_metal_device_init: GPU name: Apple M1\nggml_metal_device_init: GPU family: MTLGPUFamilyApple7 (1007)\nggml_metal_device_init: GPU family: MTLGPUFamilyCommon3 (3003)\nggml_metal_device_init: GPU family: MTLGPUFamilyMetal3 (5001)\nggml_metal_device_init: simdgroup reduction = true\nggml_metal_device_init: simdgroup matrix mul. = true\nggml_metal_device_init: has unified memory = true\nggml_metal_device_init: has bfloat = true\nggml_metal_device_init: has tensor = false\nggml_metal_device_init: use residency sets = true\nggml_metal_device_init: use shared buffers = true\nggml_metal_device_init: recommendedMaxWorkingSetSize = 11453.25 MB\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-05-14T09:25:08.714171Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-05-14T09:25:08.721297Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-05-14T09:25:08.727575Z INFO screenpipe_audio::audio_manager::manager: seeded 21 speakers (named + unnamed) from DB into embedding manager\n2026-05-14T09:25:08.727664Z INFO screenpipe_audio::audio_manager::manager: audio manager started\n2026-05-14T09:25:08.727731Z INFO screenpipe_audio::audio_manager::manager: calendar-assisted speaker diarization: listening for meeting events\n2026-05-14T09:25:09.238925Z INFO screenpipe_audio::device::device_manager: starting recording for device: System Audio (output)\n2026-05-14T09:25:09.325492Z INFO screenpipe_audio::device::device_manager: starting recording for device: soundcore AeroClip (input)\n2026-05-14T09:25:09.326604Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for soundcore AeroClip (input) (bluetooth / 30s segments)\n2026-05-14T09:25:09.326657Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for System Audio (output) (unknown / 30s segments)\n2026-05-14T09:25:16.929049Z WARN screenpipe_a11y::tree::macos_lines: lines: AXUIElementCopyParameterizedAttributeValue(AXLineForIndex) failed status=os::Status { raw: -25212, fcc: \"....\", help: \"https://www.osstatus.com?search=-25212\" } — first failure (further failures suppressed); search highlights will fall back to paragraph bbox on this app\n2026-05-14T09:25:42.118426Z INFO screenpipe_audio::transcription::handle_new_transcript: device System Audio (output) skipping duplicate transcript (entire content overlaps with previous)\n2026-05-14T09:26:02.676206Z 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=0 rows_returned=56 elapsed=4.131920875s\n2026-05-14T09:26:02.676359Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 56 eligible frames\n2026-05-14T09:26:04.733866Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 29 frames, 4.0MB → 1.9MB (2.1x), 29 JPEGs deleted\n2026-05-14T09:26:06.932633Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.3MB → 2.2MB (2.0x), 25 JPEGs deleted\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\nggml_metal_free: deallocating\n2026-05-14T09:27:10.299675Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks","is_focused":true}]...
|
-1436731437270198571
|
-5463917750643788320
|
click
|
accessibility
|
NULL
|
ggml_metal_init: use concurrency = true
ggml_me ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.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-13T20:34:02.333860Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-13T20:35:59.996074Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.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-13T20:36:06.828724Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-13T20:36:08.344162Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for MacBook Pro Microphone (input)
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
2026-05-13T20:38:09.099371Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-13T20:38:37.344312Z 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=0 rows_returned=44 elapsed=5.107326084s
2026-05-13T20:38:37.346139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 44 eligible frames
2026-05-13T20:38:38.686723Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 5.1MB → 0.5MB (10.0x), 18 JPEGs deleted
2026-05-13T20:38:41.220417Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.4MB → 3.3MB (1.6x), 24 JPEGs deleted
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.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-13T20:40:11.364685Z 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 ~ $ alias sp-start
zsh: command not found: alias
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias sp-start
zsh: command not found: alias
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ alias
addssh='ssh-add ~/.ssh/*'
app='cd ~/jiminny/app'
cnt='docker exec -ti $(docker ps | grep worker | awk '\''{print $1}'\'') /bin/bash -c "cd /home/jiminny && bash"'
co='git checkout'
cov='./vendor/bin/phpunit tests/Unit --coverage-html=build/coverage'
csfix='make cs-fix'
dev='docker exec -ti $(docker ps -q --filter "name=docker_lamp_1") /bin/bash'
eu='ssh lukas@jiminny-eu-bastion -D [IP_ADDRESS]:7073 -L 7532:db:3306'
eues='ssh ubuntu@jiminny-eu-ecs1 -L 7960:vpc-activities7-e7pfbl7wojjjnvp7olfpudrgke.eu-west-1.es.amazonaws.com:80'
ext='nvm use 20 && cd ~/jiminny/extension-app && yarn build:dev && yarn preview'
fe='yarn && nvm use 24 && cd ~/jiminny/app/front-end && yarn build:watch'
fe3='cd ~/jiminny/app/front-end-vue3 && yarn build:watch:production'
gbr='git branch --sort=-committerdate'
gcb='git branch --show-current | pbcopy'
gs='git status'
hhh=history
hhs='history 0 | grep '
install_nano='apt-get update & apt-get install nano'
kar='cp -f ~/DEV/settings/goku-karabiner-settings/karabiner.edn ~/.config/karabiner.edn && goku'
ll='ls -la --color=tty'
lock='kill %1 2>/dev/null; sleep 1 && pmset displaysleepnow'
nas='ssh Adm1n@[IP_ADDRESS] -p22'
poetryshell='eval ""'
prod='ssh lukas@jiminny-prod-bastion -D [IP_ADDRESS]:7072 -L 7632:db:3306'
prodes='ssh ubuntu@jiminny-prod-ecs1 -L 7970:vpc-activities7-3o2zlrelmga5qicf2yxxwtx6bi.us-east-2.es.amazonaws.com:80'
prophet='cd ~/jiminny/app'
prophetdown='aws-vault exec staging -- bash -c "env | grep AWS_ > aws-creds.env && docker compose -f docker-compose.yml -f docker-compose.dev.yml down"'
prophetup='aws-vault exec staging -- bash -c "env | grep AWS_ > aws-creds.env && docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build"'
qa='ssh lukas@jiminny-qa-bastion -D [IP_ADDRESS]:7074 -L 7432:db:3306'
qaes='ssh ubuntu@jiminny-qa-ecs1 -L 7950:vpc-activities7-s5zchrs4xqcnav3rjzmxgxvfvq.us-east-2.es.amazonaws.com:80'
qai='ssh lukas@jiminny-qai-bastion -D [IP_ADDRESS]:7075 -L 7777:jiminny-db-qai.c3uemcm84st0.us-east-2.rds.amazonaws.com:3306'
rmbc='rm -rf bootstrap/cache/*.php'
run-help=man
sp-db='sqlite3 ~/.screenpipe/db.sqlite '
sp-start='npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"'
sp-status='curl -s [URL_WITH_CREDENTIALS] -D [IP_ADDRESS]:7071 -L 7732:db:3306'
stges='ssh ubuntu@jiminny-stage-ecs1 -L 7980:vpc-activities7-tgeodjeaugnaiigqgdcjjkrrj4.us-east-2.es.amazonaws.com:80'
veu='ssh jiminny-eu-ecs1'
veu10='ssh jiminny-eu-ecs10'
veu11='ssh jiminny-eu-ecs11'
veu12='ssh jiminny-eu-ecs12'
veu2='ssh jiminny-eu-ecs2'
veu3='ssh jiminny-eu-ecs3'
veu4='ssh jiminny-eu-ecs4'
veu5='ssh jiminny-eu-ecs5'
veu6='ssh jiminny-eu-ecs6'
veu7='ssh jiminny-eu-ecs7'
veu8='ssh jiminny-eu-ecs8'
veu9='ssh jiminny-eu-ecs9'
vprod='ssh jiminny-prod-ecs1'
vprod10='ssh jiminny-prod-ecs10'
vprod11='ssh jiminny-prod-ecs11'
vprod12='ssh jiminny-prod-ecs12'
vprod2='ssh jiminny-prod-ecs2'
vprod3='ssh jiminny-prod-ecs3'
vprod4='ssh jiminny-prod-ecs4'
vprod5='ssh jiminny-prod-ecs5'
vprod6='ssh jiminny-prod-ecs6'
vprod7='ssh jiminny-prod-ecs7'
vprod8='ssh jiminny-prod-ecs8'
vprod9='ssh jiminny-prod-ecs9'
vqa='ssh jiminny-qa-ecs1'
vqa2='ssh jiminny-qa-ecs2'
vqai='ssh jiminny-qai-ecs1'
vqai2='ssh jiminny-qai-ecs2'
vstage='ssh ec2-user@jiminny-subenv-worker-app0'
vstg='ssh jiminny-stage-ecs1'
vstg2='ssh ubuntu@jiminny-stage-ecs2'
which-command=whence
work='cd ~/jiminny/infrastructure/dev/docker && docker compose up'
workoff='kill %1'
workon='caffeinate -d & echo "Display sleep disabled (PID $!)"'
xd='make docker-xdebug-disable'
xe='make docker-xdebug-enable'
zp='nano ~/.zprofile'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-05-14T09:24:57.412901Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
microphone: ok
accessibility: ok
2026-05-14T09:24:57.504235Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-05-14T09:24:58.108327Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-05-14T09:24:58.110039Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-05-14T09:24:58.110396Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-05-14T09:24:58.131971Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-05-14T09:24:58.132049Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-05-14T09:24:58.543048Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-05-14T09:24:58.543106Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-05-14T09:24:58.542983Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-05-14T09:24:58.542992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-05-14T09:24:58.543188Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-05-14T09:24:58.545885Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-05-14T09:24:58.546638Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-05-14T09:24:58.546795Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-05-14T09:24:58.547356Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-05-14T09:24:58.547453Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-05-14T09:24:58.547767Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-05-14T09:24:58.547888Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
2026-05-14T09:24:58.550735Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
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 │ │
│ │ soundcore AeroClip (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-14T09:24:58.552083Z INFO screenpipe: starting UI event capture
2026-05-14T09:24:58.555587Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
2026-05-14T09:24:58.557961Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-05-14T09:24:58.568371Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-05-14T09:24:58.584826Z INFO screenpipe: text-PII worker skipped at startup — async_pii_redaction=false. OPF model (~2.8 GB) will NOT be downloaded or loaded. Toggle via Settings → Privacy → AI PII removal.
2026-05-14T09:24:58.584861Z INFO screenpipe: image-PII worker skipped at startup — async_image_pii_redaction=false. rfdetr_v9 model (~108 MB) will NOT be downloaded or loaded. Toggle via Settings → Privacy → AI PII removal.
2026-05-14T09:24:58.584915Z INFO screenpipe_engine::ui_recorder: UI recording session started: 25f92ee5-c210-4bb0-aa44-4054d2351b03
2026-05-14T09:24:58.584978Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-05-14T09:24:58.585134Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-05-13 06:24:58.585133 UTC to 2026-05-14 06:24:58.585133 UTC)
2026-05-14T09:24:58.585862Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-05-14T09:24:58.594987Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-05-14T09:24:58.599110Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-05-14T09:24:58.699260Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-05-14T09:24:58.699315Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-05-14T09:24:58.699350Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-05-14T09:24:58.746653Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (3008x1253)
2026-05-14T09:24:58.746781Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-05-14T09:24:58.746794Z INFO screenpipe_engine::vision_manager::manager: VisionManager started with 2/2 monitor(s)
2026-05-14T09:24:58.746801Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s backstop poll)
2026-05-14T09:24:58.746815Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-05-14T09:24:59.307089Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 0 excluded)
2026-05-14T09:24:59.416921Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 0 excluded)
2026-05-14T09:24:59.478046Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=38633, dur=113ms
2026-05-14T09:24:59.615567Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=38634, dur=139ms
2026-05-14T09:25:04.109913Z 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 frames f\n LEFT JOIN video_chunks vc ON f.video_chunk_id = vc.id\nWHERE\n f.timestamp >= ?1\n AND f.timestamp <= ?2\n AND COALESCE(vc.file_path, f.snapshot_path, '') NOT LIKE 'cloud://%'\nORDER BY\n f.timestamp DESC,\n f.offset_index DESC\nLIMIT\n 10000\n" rows_affected=0 rows_returned=9423 elapsed=5.524093667s
2026-05-14T09:25:04.143960Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 9423 frame entries, coverage from 2026-05-13 06:24:58.585133 UTC
2026-05-14T09:25:08.557254Z INFO screenpipe_audio::transcription::engine: whisper model available: "/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin"
2026-05-14T09:25:08.557399Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)
2026-05-14T09:25:08.557427Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...
whisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'
whisper_init_with_params_no_state: use gpu = 1
whisper_init_with_params_no_state: flash attn = 0
whisper_init_with_params_no_state: gpu_device = 0
whisper_init_with_params_no_state: dtw = 0
ggml_metal_device_init: tensor API disabled for pre-M5 and pre-A19 devices
ggml_metal_library_init: using embedded metal library
ggml_metal_library_init: loaded in 0.045 sec
ggml_metal_rsets_init: creating a residency set collection (keep_alive = 180 s)
ggml_metal_device_init: GPU name: Apple M1
ggml_metal_device_init: GPU family: MTLGPUFamilyApple7 (1007)
ggml_metal_device_init: GPU family: MTLGPUFamilyCommon3 (3003)
ggml_metal_device_init: GPU family: MTLGPUFamilyMetal3 (5001)
ggml_metal_device_init: simdgroup reduction = true
ggml_metal_device_init: simdgroup matrix mul. = true
ggml_metal_device_init: has unified memory = true
ggml_metal_device_init: has bfloat = true
ggml_metal_device_init: has tensor = false
ggml_metal_device_init: use residency sets = true
ggml_metal_device_init: use shared buffers = true
ggml_metal_device_init: recommendedMaxWorkingSetSize = 11453.25 MB
whisper_init_with_params_no_state: devices = 3
whisper_init_with_params_no_state: backends = 3
whisper_model_load: loading model
whisper_model_load: n_vocab = 51865
whisper_model_load: n_audio_ctx = 1500
whisper_model_load: n_audio_state = 384
whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-05-14T09:25:08.714171Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38759
|
1437
|
41
|
2026-05-14T06:28:17.878754+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740097878_m1.jpg...
|
iTerm2
|
ec2-user@ip-10-30-129-190:~
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rsync System Audio (output)_2026-05-12_06-51-30.mp rsync System Audio (output)_2026-05-12_06-51-30.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-51-46.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_06-51-59.mp4 → NAS ✓ 255K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-52-16.mp4 → NAS ✓ 219K
rsync System Audio (output)_2026-05-12_06-52-27.mp4 → NAS ✓ 252K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-52-45.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_06-52-56.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-53-15.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_06-53-25.mp4 → NAS ✓ 243K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-53-45.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-12_06-53-54.mp4 → NAS ✓ 259K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-54-15.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-12_06-54-22.mp4 → NAS ✓ 239K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-54-44.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-12_06-54-51.mp4 → NAS ✓ 253K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-55-14.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-12_06-55-21.mp4 → NAS ✓ 249K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-55-44.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_06-55-50.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-56-14.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-12_06-56-19.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-56-44.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-12_06-56-49.mp4 → NAS ✓ 247K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-57-14.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_06-57-17.mp4 → NAS ✓ 241K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-57-44.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-12_06-57-46.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-58-14.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_06-58-44.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-58-44.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_06-59-13.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-59-13.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_06-59-43.mp4 → NAS ✓ 241K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-59-43.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-12_07-00-12.mp4 → NAS ✓ 258K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-00-13.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_07-00-41.mp4 → NAS ✓ 253K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-00-43.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_07-01-09.mp4 → NAS ✓ 257K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-01-13.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-12_07-01-37.mp4 → NAS ✓ 252K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-01-42.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_07-02-06.mp4 → NAS ✓ 252K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-02-12.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_07-02-36.mp4 → NAS ✓ 251K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-02-42.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_07-03-04.mp4 → NAS ✓ 257K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-03-12.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_07-03-31.mp4 → NAS ✓ 264K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-03-42.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-12_07-04-00.mp4 → NAS ✓ 253K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-04-12.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_07-04-29.mp4 → NAS ✓ 236K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-04-42.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-12_07-04-59.mp4 → NAS ✓ 253K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-05-11.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_07-05-27.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-05-41.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-12_07-05-57.mp4 → NAS ✓ 244K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-06-11.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_07-06-26.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-06-41.mp4 → NAS ✓ 199K
rsync System Audio (output)_2026-05-12_07-06-56.mp4 → NAS ✓ 247K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-07-11.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-12_07-07-24.mp4 → NAS ✓ 235K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-07-40.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_07-07-51.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-08-10.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-12_07-08-20.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-08-40.mp4 → NAS ✓ 225K
rsync System Audio (output)_2026-05-12_07-08-47.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-09-10.mp4 → NAS ✓ 223K
rsync System Audio (output)_2026-05-12_07-09-17.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-09-40.mp4 → NAS ✓ 223K
rsync System Audio (output)_2026-05-12_07-09-45.mp4 → NAS ✓ 249K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-10-09.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-12_07-10-13.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-10-39.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-12_07-10-42.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-11-09.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-12_07-11-11.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-11-39.mp4 → NAS ✓ 215K
rsync System Audio (output)_2026-05-12_07-12-09.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-12-09.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-12_07-12-38.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-12-39.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-12_07-13-08.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-13-09.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-12_07-13-38.mp4 → NAS ✓ 106K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-13-39.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-12_07-14-07.mp4 → NAS ✓ 14K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-14-08.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-12_07-14-36.mp4 → NAS ✓ 44K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-14-38.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-12_07-15-06.mp4 → NAS ✓ 5.0K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-15-08.mp4 → NAS ✓ 210K
rsync System Audio (output)_2026-05-12_07-15-35.mp4 → NAS ✓ 5.0K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-15-38.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-12_07-16-05.mp4 → NAS ✓ 5.0K
rsync MacBook Pro Microphone (input)_2026-05-12_07-16-29.mp4 → NAS ✓ 43K
rsync MacBook Pro Microphone (input)_2026-05-12_07-16-37.mp4 → NAS ✓ 16K
rsync System Audio (output)_2026-05-12_07-16-35.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-16-47.mp4 → NAS ✓ 10K
rsync System Audio (output)_2026-05-12_07-17-05.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-17-19.mp4 → NAS ✓ 27K
rsync System Audio (output)_2026-05-12_07-17-34.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-17-49.mp4 → NAS ✓ 56K
rsync System Audio (output)_2026-05-12_07-18-04.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-18-19.mp4 → NAS ✓ 66K
rsync System Audio (output)_2026-05-12_07-18-34.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-18-49.mp4 → NAS ✓ 137K
rsync System Audio (output)_2026-05-12_07-19-04.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-19-19.mp4 → NAS ✓ 148K
rsync System Audio (output)_2026-05-12_07-19-33.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-19-49.mp4 → NAS ✓ 93K
rsync System Audio (output)_2026-05-12_07-20-03.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-20-19.mp4 → NAS ✓ 110K
rsync System Audio (output)_2026-05-12_07-20-33.mp4 → NAS ✓ 83K
rsync soundcore AeroClip (input)_2026-05-12_07-20-49.mp4 → NAS ✓ 182K
rsync System Audio (output)_2026-05-12_07-21-03.mp4 → NAS ✓ 47K
rsync soundcore AeroClip (input)_2026-05-12_07-21-19.mp4 → NAS ✓ 128K
rsync System Audio (output)_2026-05-12_07-21-33.mp4 → NAS ✓ 223K
rsync soundcore AeroClip (input)_2026-05-12_07-21-49.mp4 → NAS ✓ 68K
rsync System Audio (output)_2026-05-12_07-22-02.mp4 → NAS ✓ 90K
rsync soundcore AeroClip (input)_2026-05-12_07-22-19.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-22-32.mp4 → NAS ✓ 30K
rsync soundcore AeroClip (input)_2026-05-12_07-22-49.mp4 → NAS ✓ 19K
rsync System Audio (output)_2026-05-12_07-23-02.mp4 → NAS ✓ 210K
rsync soundcore AeroClip (input)_2026-05-12_07-23-19.mp4 → NAS ✓ 27K
rsync System Audio (output)_2026-05-12_07-23-32.mp4 → NAS ✓ 84K
rsync soundcore AeroClip (input)_2026-05-12_07-23-49.mp4 → NAS ✓ 22K
rsync System Audio (output)_2026-05-12_07-24-02.mp4 → NAS ✓ 209K
rsync soundcore AeroClip (input)_2026-05-12_07-24-19.mp4 → NAS ✓ 33K
rsync System Audio (output)_2026-05-12_07-24-32.mp4 → NAS ✓ 103K
rsync soundcore AeroClip (input)_2026-05-12_07-24-49.mp4 → NAS ✓ 55K
rsync System Audio (output)_2026-05-12_07-25-01.mp4 → NAS ✓ 139K
rsync soundcore AeroClip (input)_2026-05-12_07-25-19.mp4 → NAS ✓ 20K
rsync System Audio (output)_2026-05-12_07-25-31.mp4 → NAS ✓ 135K
rsync soundcore AeroClip (input)_2026-05-12_07-25-49.mp4 → NAS ✓ 13K
rsync System Audio (output)_2026-05-12_07-26-01.mp4 → NAS ✓ 174K
rsync soundcore AeroClip (input)_2026-05-12_07-26-19.mp4 → NAS ✓ 14K
rsync System Audio (output)_2026-05-12_07-26-31.mp4 → NAS ✓ 170K
rsync soundcore AeroClip (input)_2026-05-12_07-26-49.mp4 → NAS ✓ 29K
rsync System Audio (output)_2026-05-12_07-27-01.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_07-27-19.mp4 → NAS ✓ 23K
rsync System Audio (output)_2026-05-12_07-27-31.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-27-49.mp4 → NAS ✓ 44K
rsync System Audio (output)_2026-05-12_07-28-01.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-28-19.mp4 → NAS ✓ 24K
rsync System Audio (output)_2026-05-12_07-28-31.mp4 → NAS ✓ 42K
rsync soundcore AeroClip (input)_2026-05-12_07-28-49.mp4 → NAS ✓ 35K
rsync System Audio (output)_2026-05-12_07-29-00.mp4 → NAS ✓ 63K
rsync soundcore AeroClip (input)_2026-05-12_07-29-19.mp4 → NAS ✓ 24K
rsync System Audio (output)_2026-05-12_07-29-30.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-29-49.mp4 → NAS ✓ 18K
rsync System Audio (output)_2026-05-12_07-30-00.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-30-19.mp4 → NAS ✓ 42K
rsync System Audio (output)_2026-05-12_07-30-30.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-30-49.mp4 → NAS ✓ 36K
rsync System Audio (output)_2026-05-12_07-31-00.mp4 → NAS ✓ 62K
rsync soundcore AeroClip (input)_2026-05-12_07-31-19.mp4 → NAS ✓ 21K
rsync System Audio (output)_2026-05-12_07-31-30.mp4 → NAS ✓ 134K
rsync soundcore AeroClip (input)_2026-05-12_07-31-49.mp4 → NAS ✓ 18K
rsync System Audio (output)_2026-05-12_07-31-59.mp4 → NAS ✓ 164K
rsync soundcore AeroClip (input)_2026-05-12_07-32-19.mp4 → NAS ✓ 41K
rsync System Audio (output)_2026-05-12_07-32-29.mp4 → NAS ✓ 28K
rsync soundcore AeroClip (input)_2026-05-12_07-32-49.mp4 → NAS ✓ 36K
rsync System Audio (output)_2026-05-12_07-32-59.mp4 → NAS ✓ 33K
rsync soundcore AeroClip (input)_2026-05-12_07-33-18.mp4 → NAS ✓ 19K
rsync System Audio (output)_2026-05-12_07-33-29.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-33-48.mp4 → NAS ✓ 79K
rsync System Audio (output)_2026-05-12_07-33-58.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-34-18.mp4 → NAS ✓ 82K
rsync System Audio (output)_2026-05-12_07-34-28.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-34-48.mp4 → NAS ✓ 91K
rsync System Audio (output)_2026-05-12_07-34-58.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-35-18.mp4 → NAS ✓ 71K
rsync System Audio (output)_2026-05-12_07-35-28.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-35-48.mp4 → NAS ✓ 45K
rsync System Audio (output)_2026-05-12_07-35-58.mp4 → NAS ✓ 158K
rsync soundcore AeroClip (input)_2026-05-12_07-36-18.mp4 → NAS ✓ 23K
rsync System Audio (output)_2026-05-12_07-36-27.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-36-48.mp4 → NAS ✓ 22K
rsync System Audio (output)_2026-05-12_07-36-57.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-37-18.mp4 → NAS ✓ 33K
rsync System Audio (output)_2026-05-12_07-37-27.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-37-48.mp4 → NAS ✓ 19K
rsync System Audio (output)_2026-05-12_07-37-57.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-38-18.mp4 → NAS ✓ 17K
rsync System Audio (output)_2026-05-12_07-38-26.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-38-48.mp4 → NAS ✓ 40K
rsync System Audio (output)_2026-05-12_07-38-56.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-39-18.mp4 → NAS ✓ 25K
rsync System Audio (output)_2026-05-12_07-39-26.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-39-48.mp4 → NAS ✓ 32K
rsync System Audio (output)_2026-05-12_07-39-55.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-40-18.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-40-25.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 → NAS ✓ 14K
rsync System Audio (output)_2026-05-12_07-40-55.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-41-18.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-41-24.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-41-48.mp4 → NAS ✓ 28K
rsync System Audio (output)_2026-05-12_07-41-54.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-42-18.mp4 → NAS ✓ 45K
rsync System Audio (output)_2026-05-12_07-42-24.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-42-48.mp4 → NAS ✓ 67K
rsync System Audio (output)_2026-05-12_07-42-54.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-43-18.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-43-23.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-43-47.mp4 → NAS ✓ 16K
rsync System Audio (output)_2026-05-12_07-43-53.mp4 → NAS ✓ 5.0K
rsync System Audio (output)_2026-05-12_07-44-23.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-44-47.mp4 → NAS ✓ 9.0K
rsync System Audio (output)_2026-05-12_07-44-53.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-45-19.mp4 → NAS ✓ 37K
rsync System Audio (output)_2026-05-12_07-45-22.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-45-49.mp4 → NAS ✓ 23K
rsync System Audio (output)_2026-05-12_07-45-51.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-46-19.mp4 → NAS ✓ 7.0K
rsync System Audio (output)_2026-05-12_07-46-21.mp4 → NAS ✓ 5.0K
rsync System Audio (output)_2026-05-12_07-46-51.mp4 → NAS ✓ 5.0K
rsync System Audio (output)_2026-05-12_07-47-21.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-47-19.mp4 → NAS ✓ 7.0K
rsync System Audio (output)_2026-05-12_07-47-51.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-47-51.mp4 → NAS ✓ 16K
rsync System Audio (output)_2026-05-12_07-48-21.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-48-21.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-48-50.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-48-51.mp4 → NAS ✓ 14K
rsync System Audio (output)_2026-05-12_07-49-20.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-49-21.mp4 → NAS ✓ 11K
rsync System Audio (output)_2026-05-12_07-49-50.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-49-51.mp4 → NAS ✓ 6.0K
rsync System Audio (output)_2026-05-12_07-50-20.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-50-27.mp4 → NAS ✓ 25K
rsync System Audio (output)_2026-05-12_07-50-50.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-50-59.mp4 → NAS ✓ 10K
rsync System Audio (output)_2026-05-12_07-51-19.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-51-29.mp4 → NAS ✓ 12K
rsync System Audio (output)_2026-05-12_07-51-48.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-51-59.mp4 → NAS ✓ 17K
rsync System Audio (output)_2026-05-12_07-52-18.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-52-29.mp4 → NAS ✓ 17K
rsync System Audio (output)_2026-05-12_07-52-48.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-52-59.mp4 → NAS ✓ 13K
rsync System Audio (output)_2026-05-12_07-53-18.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-53-29.mp4 → NAS ✓ 18K
rsync System Audio (output)_2026-05-12_07-53-48.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-53-59.mp4 → NAS ✓ 9.0K
rsync System Audio (output)_2026-05-12_07-54-17.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-54-29.mp4 → NAS ✓ 7.0K
rsync System Audio (output)_2026-05-12_07-54-47.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-54-59.mp4 → NAS ✓ 12K
rsync System Audio (output)_2026-05-12_07-55-17.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-55-29.mp4 → NAS ✓ 38K
rsync System Audio (output)_2026-05-12_07-55-47.mp4 → NAS ✓ 170K
rsync soundcore AeroClip (input)_2026-05-12_07-55-58.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-12_07-56-16.mp4 → NAS ✓ 194K
rsync soundcore AeroClip (input)_2026-05-12_07-56-28.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-12_07-56-45.mp4 → NAS ✓ 196K
rsync soundcore AeroClip (input)_2026-05-12_07-56-58.mp4 → NAS ✓ 159K
rsync System Audio (output)_2026-05-12_07-57-15.mp4 → NAS ✓ 230K
rsync soundcore AeroClip (input)_2026-05-12_07-57-28.mp4 → NAS ✓ 107K
rsync System Audio (output)_2026-05-12_07-57-44.mp4 → NAS ✓ 238K
rsync soundcore AeroClip (input)_2026-05-12_07-57-58.mp4 → NAS ✓ 94K
rsync System Audio (output)_2026-05-12_07-58-14.mp4 → NAS ✓ 229K
rsync soundcore AeroClip (input)_2026-05-12_07-58-28.mp4 → NAS ✓ 107K
rsync System Audio (output)_2026-05-12_07-58-44.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_07-58-58.mp4 → NAS ✓ 84K
rsync System Audio (output)_2026-05-12_07-59-13.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-59-27.mp4 → NAS ✓ 52K
rsync System Audio (output)_2026-05-12_07-59-43.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-59-57.mp4 → NAS ✓ 65K
rsync System Audio (output)_2026-05-12_08-00-13.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-00-27.mp4 → NAS ✓ 170K
rsync System Audio (output)_2026-05-12_08-00-43.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-00-57.mp4 → NAS ✓ 163K
rsync System Audio (output)_2026-05-12_08-01-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-01-27.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-12_08-01-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-01-57.mp4 → NAS ✓ 219K
rsync System Audio (output)_2026-05-12_08-02-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-02-27.mp4 → NAS ✓ 161K
rsync System Audio (output)_2026-05-12_08-02-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-02-57.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-12_08-03-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-03-28.mp4 → NAS ✓ 124K
rsync System Audio (output)_2026-05-12_08-03-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-03-58.mp4 → NAS ✓ 181K
rsync System Audio (output)_2026-05-12_08-04-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-04-27.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-12_08-04-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-04-57.mp4 → NAS ✓ 247K
rsync System Audio (output)_2026-05-12_08-05-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-05-27.mp4 → NAS ✓ 239K
rsync System Audio (output)_2026-05-12_08-05-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-05-57.mp4 → NAS ✓ 250K
rsync System Audio (output)_2026-05-12_08-06-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-06-27.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-12_08-06-41.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-06-57.mp4 → NAS ✓ 247K
rsync System Audio (output)_2026-05-12_08-07-11.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-07-27.mp4 → NAS ✓ 238K
rsync System Audio (output)_2026-05-12_08-07-41.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-07-57.mp4 → NAS ✓ 136K
rsync System Audio (output)_2026-05-12_08-08-11.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-08-27.mp4 → NAS ✓ 177K
rsync System Audio (output)_2026-05-12_08-08-41.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-08-57.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-12_08-09-11.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-09-27.mp4 → NAS ✓ 219K
rsync soundcore AeroClip (input)_2026-05-12_08-09-57.mp4 → NAS ✓ 245K
rsync soundcore AeroClip (input)_2026-05-12_08-12-10.mp4 → NAS ✓ 58K
rsync soundcore AeroClip (input)_2026-05-12_08-12-42.mp4 → NAS ✓ 117K
rsync soundcore AeroClip (input)_2026-05-12_08-13-12.mp4 → NAS ✓ 67K
rsync soundcore AeroClip (input)_2026-05-12_08-13-42.mp4 → NAS ✓ 64K
rsync soundcore AeroClip (input)_2026-05-12_08-14-12.mp4 → NAS ✓ 92K
rsync soundcore AeroClip (input)_2026-05-12_08-14-42.mp4 → NAS ✓ 60K
rsync soundcore AeroClip (input)_2026-05-12_08-15-12.mp4 → NAS ✓ 64K
rsync soundcore AeroClip (input)_2026-05-12_08-15-42.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_08-16-12.mp4 → NAS ✓ 17K
rsync soundcore AeroClip (input)_2026-05-12_08-16-42.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_08-17-12.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_08-17-42.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-18-12.mp4 → NAS ✓ 7.0K
rsync soundcore AeroClip (input)_2026-05-12_08-19-13.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_08-19-45.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_08-20-15.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_08-20-45.mp4 → NAS ✓ 14K
rsync soundcore AeroClip (input)_2026-05-12_08-21-15.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_08-21-45.mp4 → NAS ✓ 18K
rsync soundcore AeroClip (input)_2026-05-12_08-22-15.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-22-45.mp4 → NAS ✓ 17K
rsync soundcore AeroClip (input)_2026-05-12_08-23-15.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_08-23-45.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-24-15.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_08-24-45.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_08-25-15.mp4 → NAS ✓ 28K
rsync soundcore AeroClip (input)_2026-05-12_08-25-45.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_08-26-28.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_08-27-00.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_08-27-30.mp4 → NAS ✓ 38K
rsync soundcore AeroClip (input)_2026-05-12_08-28-00.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_08-28-30.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_08-29-00.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_08-29-30.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_08-30-00.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_08-30-30.mp4 → NAS ✓ 29K
rsync soundcore AeroClip (input)_2026-05-12_08-31-00.mp4 → NAS ✓ 60K
rsync soundcore AeroClip (input)_2026-05-12_08-31-30.mp4 → NAS ✓ 124K
rsync soundcore AeroClip (input)_2026-05-12_08-32-00.mp4 → NAS ✓ 73K
rsync soundcore AeroClip (input)_2026-05-12_08-32-30.mp4 → NAS ✓ 39K
rsync soundcore AeroClip (input)_2026-05-12_08-32-59.mp4 → NAS ✓ 52K
rsync soundcore AeroClip (input)_2026-05-12_08-33-29.mp4 → NAS ✓ 127K
rsync soundcore AeroClip (input)_2026-05-12_08-33-59.mp4 → NAS ✓ 139K
rsync soundcore AeroClip (input)_2026-05-12_08-34-29.mp4 → NAS ✓ 169K
rsync soundcore AeroClip (input)_2026-05-12_08-34-59.mp4 → NAS ✓ 85K
rsync soundcore AeroClip (input)_2026-05-12_08-35-29.mp4 → NAS ✓ 30K
rsync soundcore AeroClip (input)_2026-05-12_08-35-59.mp4 → NAS ✓ 34K
rsync soundcore AeroClip (input)_2026-05-12_08-36-29.mp4 → NAS ✓ 47K
rsync soundcore AeroClip (input)_2026-05-12_08-37-10.mp4 → NAS ✓ 10K
rsync soundcore AeroClip (input)_2026-05-12_08-37-42.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_08-38-12.mp4 → NAS ✓ 123K
rsync soundcore AeroClip (input)_2026-05-12_08-38-42.mp4 → NAS ✓ 164K
rsync soundcore AeroClip (input)_2026-05-12_08-39-12.mp4 → NAS ✓ 179K
rsync soundcore AeroClip (input)_2026-05-12_08-39-42.mp4 → NAS ✓ 176K
rsync soundcore AeroClip (input)_2026-05-12_08-40-12.mp4 → NAS ✓ 173K
rsync soundcore AeroClip (input)_2026-05-12_08-40-42.mp4 → NAS ✓ 157K
rsync soundcore AeroClip (input)_2026-05-12_08-41-12.mp4 → NAS ✓ 101K
rsync soundcore AeroClip (input)_2026-05-12_08-41-42.mp4 → NAS ✓ 119K
rsync soundcore AeroClip (input)_2026-05-12_08-42-12.mp4 → NAS ✓ 79K
rsync soundcore AeroClip (input)_2026-05-12_08-42-42.mp4 → NAS ✓ 14K
rsync soundcore AeroClip (input)_2026-05-12_08-43-12.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_08-43-42.mp4 → NAS ✓ 25K
rsync soundcore AeroClip (input)_2026-05-12_08-44-12.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-44-42.mp4 → NAS ✓ 105K
rsync soundcore AeroClip (input)_2026-05-12_08-45-12.mp4 → NAS ✓ 160K
rsync soundcore AeroClip (input)_2026-05-12_08-45-41.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_08-46-11.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_08-46-41.mp4 → NAS ✓ 12K
rsync soundcore AeroClip (input)_2026-05-12_08-47-11.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-47-41.mp4 → NAS ✓ 47K
rsync soundcore AeroClip (input)_2026-05-12_08-48-11.mp4 → NAS ✓ 83K
rsync soundcore AeroClip (input)_2026-05-12_08-48-41.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_08-49-11.mp4 → NAS ✓ 40K
rsync soundcore AeroClip (input)_2026-05-12_08-49-41.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_08-50-11.mp4 → NAS ✓ 17K
rsync soundcore AeroClip (input)_2026-05-12_08-50-41.mp4 → NAS ✓ 125K
rsync soundcore AeroClip (input)_2026-05-12_08-51-11.mp4 → NAS ✓ 69K
rsync soundcore AeroClip (input)_2026-05-12_08-51-41.mp4 → NAS ✓ 67K
rsync soundcore AeroClip (input)_2026-05-12_08-52-11.mp4 → NAS ✓ 57K
rsync soundcore AeroClip (input)_2026-05-12_08-52-41.mp4 → NAS ✓ 38K
rsync soundcore AeroClip (input)_2026-05-12_08-53-11.mp4 → NAS ✓ 29K
rsync soundcore AeroClip (input)_2026-05-12_08-53-41.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_08-54-11.mp4 → NAS ✓ 29K
rsync soundcore AeroClip (input)_2026-05-12_08-54-41.mp4 → NAS ✓ 14K
rsync soundcore AeroClip (input)_2026-05-12_08-55-11.mp4 → NAS ✓ 39K
rsync soundcore AeroClip (input)_2026-05-12_08-55-41.mp4 → NAS ✓ 25K
rsync soundcore AeroClip (input)_2026-05-12_08-56-11.mp4 → NAS ✓ 31K
rsync soundcore AeroClip (input)_2026-05-12_08-56-41.mp4 → NAS ✓ 24K
rsync soundcore AeroClip (input)_2026-05-12_08-57-11.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_08-57-41.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_08-58-11.mp4 → NAS ✓ 18K
rsync soundcore AeroClip (input)_2026-05-12_08-58-41.mp4 → NAS ✓ 35K
rsync soundcore AeroClip (input)_2026-05-12_08-59-11.mp4 → NAS ✓ 35K
rsync soundcore AeroClip (input)_2026-05-12_08-59-41.mp4 → NAS ✓ 19K
rsync soundcore AeroClip (input)_2026-05-12_09-00-11.mp4 → NAS ✓ 19K
rsync soundcore AeroClip (input)_2026-05-12_09-00-41.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_09-01-11.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_09-01-41.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_09-02-11.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-03-07.mp4 → NAS ✓ 32K
rsync soundcore AeroClip (input)_2026-05-12_09-03-39.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-04-09.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_09-04-39.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-05-12.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_09-05-44.mp4 → NAS ✓ 28K
rsync soundcore AeroClip (input)_2026-05-12_09-06-14.mp4 → NAS ✓ 60K
rsync soundcore AeroClip (input)_2026-05-12_09-06-44.mp4 → NAS ✓ 43K
rsync soundcore AeroClip (input)_2026-05-12_09-07-14.mp4 → NAS ✓ 42K
rsync soundcore AeroClip (input)_2026-05-12_09-07-44.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_09-08-14.mp4 → NAS ✓ 26K
rsync soundcore AeroClip (input)_2026-05-12_09-08-44.mp4 → NAS ✓ 36K
rsync soundcore AeroClip (input)_2026-05-12_09-09-14.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-09-44.mp4 → NAS ✓ 7.0K
rsync soundcore AeroClip (input)_2026-05-12_09-10-14.mp4 → NAS ✓ 10K
rsync soundcore AeroClip (input)_2026-05-12_09-10-44.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_09-11-14.mp4 → NAS ✓ 7.0K
rsync soundcore AeroClip (input)_2026-05-12_09-11-44.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-12-14.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_09-12-43.mp4 → NAS ✓ 35K
rsync soundcore AeroClip (input)_2026-05-12_09-13-13.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_09-13-43.mp4 → NAS ✓ 40K
rsync soundcore AeroClip (input)_2026-05-12_09-14-13.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_09-14-43.mp4 → NAS ✓ 24K
rsync soundcore AeroClip (input)_2026-05-12_09-15-13.mp4 → NAS ✓ 29K
rsync soundcore AeroClip (input)_2026-05-12_09-15-43.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_09-16-13.mp4 → NAS ✓ 26K
rsync soundcore AeroClip (input)_2026-05-12_09-16-43.mp4 → NAS ✓ 24K
rsync soundcore AeroClip (input)_2026-05-12_09-17-13.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_09-17-43.mp4 → NAS ✓ 33K
rsync soundcore AeroClip (input)_2026-05-12_09-18-13.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_09-18-43.mp4 → NAS ✓ 30K
rsync soundcore AeroClip (input)_2026-05-12_09-19-12.mp4 → NAS ✓ 12K
rsync soundcore AeroClip (input)_2026-05-12_09-19-42.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_09-20-18.mp4 → NAS ✓ 12K
rsync soundcore AeroClip (input)_2026-05-12_09-20-50.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-21-20.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-21-59.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-22-31.mp4 → NAS ✓ 12K
rsync soundcore AeroClip (input)_2026-05-12_09-23-01.mp4 → NAS ✓ 28K
rsync soundcore AeroClip (input)_2026-05-12_09-24-02.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_09-24-34.mp4 → NAS ✓ 30K
rsync soundcore AeroClip (input)_2026-05-12_09-25-04.mp4 → NAS ✓ 53K
rsync soundcore AeroClip (input)_2026-05-12_09-25-34.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_09-26-04.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-26-34.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_09-27-04.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_09-27-34.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_09-28-04.mp4 → NAS ✓ 19K
rsync soundcore AeroClip (input)_2026-05-12_09-28-34.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_09-29-04.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_09-29-34.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_09-30-04.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_09-30-34.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_09-31-04.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_09-31-33.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-32-03.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-32-33.mp4 → NAS ✓ 55K
rsync soundcore AeroClip (input)_2026-05-12_09-33-03.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_09-33-33.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_09-34-03.mp4 → NAS ✓ 17K
rsync soundcore AeroClip (input)_2026-05-12_09-34-33.mp4 → NAS ✓ 63K
rsync soundcore AeroClip (input)_2026-05-12_09-35-03.mp4 → NAS ✓ 57K
rsync soundcore AeroClip (input)_2026-05-12_09-35-33.mp4 → NAS ✓ 64K
rsync soundcore AeroClip (input)_2026-05-12_09-36-03.mp4 → NAS ✓ 70K
rsync soundcore AeroClip (input)_2026-05-12_09-36-33.mp4 → NAS ✓ 56K
rsync soundcore AeroClip (input)_2026-05-12_09-37-03.mp4 → NAS ✓ 86K
rsync soundcore AeroClip (input)_2026-05-12_09-37-33.mp4 → NAS ✓ 66K
rsync soundcore AeroClip (input)_2026-05-12_09-38-03.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_09-38-33.mp4 → NAS ✓ 19K
rsync soundcore AeroClip (input)_2026-05-12_09-39-28.mp4 → NAS ✓ 34K
rsync soundcore AeroClip (input)_2026-05-12_09-40-00.mp4 → NAS ✓ 53K
rsync soundcore AeroClip (input)_2026-05-12_09-40-30.mp4 → NAS ✓ 50K
rsync MacBook Pro Microphone (input)_2026-05-12_09-41-30.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-42-02.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-42-32.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-43-02.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_09-43-32.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_09-44-02.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_09-44-32.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_09-45-02.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-45-32.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-12_09-46-02.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-46-32.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-47-01.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-47-31.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-48-01.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-48-31.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-49-01.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_09-49-31.mp4 → NAS ✓ 197K
rsync MacBook Pro Microphone (input)_2026-05-12_09-50-01.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_09-50-31.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_09-51-01.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_09-51-31.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-52-01.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-52-31.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-53-00.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-53-30.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-54-00.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-54-30.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-55-00.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-55-30.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-01-32.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-12_10-02-01.mp4 → NAS ✓ 221K
rsync MacBook Pro Microphone (input)_2026-05-12_10-02-30.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-12_10-03-00.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-12_10-03-29.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-03-59.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-04-29.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-04-59.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-05-29.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-05-59.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-06-29.mp4 → NAS ✓ 197K
rsync MacBook Pro Microphone (input)_2026-05-12_10-06-59.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_10-07-29.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_10-07-59.mp4 → NAS ✓ 198K
rsync MacBook Pro Microphone (input)_2026-05-12_10-08-28.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_10-08-58.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-09-28.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_10-09-58.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-10-28.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_10-10-58.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-11-28.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-11-58.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-12-28.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-12-58.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-13-28.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-13-58.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-14-28.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-14-58.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-15-28.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-15-57.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-16-27.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-16-57.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-17-27.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-17-57.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-18-27.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-18-57.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-19-27.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-19-57.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-28-53.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-29-24.mp4 → NAS ✓ 215K
rsync MacBook Pro Microphone (input)_2026-05-12_10-29-53.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-12_10-30-23.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-30-53.mp4 → NAS ✓ 218K
rsync MacBook Pro Microphone (input)_2026-05-12_10-31-23.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-31-53.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-32-23.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-32-53.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-33-23.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-33-53.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-34-22.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_10-34-52.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_10-35-22.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_10-35-52.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-36-22.mp4 → NAS ✓ 226K
rsync MacBook Pro Microphone (input)_2026-05-12_10-36-52.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-37-22.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-37-52.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-38-22.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-38-52.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-39-22.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-39-51.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-12_10-40-21.mp4 → NAS ✓ 218K
rsync MacBook Pro Microphone (input)_2026-05-12_10-40-51.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-12_10-41-21.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-41-51.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-42-21.mp4 → NAS ✓ 219K
rsync MacBook Pro Microphone (input)_2026-05-12_10-42-51.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-43-21.mp4 → NAS ✓ 223K
rsync MacBook Pro Microphone (input)_2026-05-12_10-43-50.mp4 → NAS ✓ 233K
rsync MacBook Pro Microphone (input)_2026-05-12_10-44-20.mp4 → NAS ✓ 222K
rsync MacBook Pro Microphone (input)_2026-05-12_10-44-50.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-45-20.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-45-50.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-12_10-46-20.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-12_10-46-50.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-47-19.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-12_10-47-49.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-48-19.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-48-49.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-49-19.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-49-49.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-50-19.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-50-49.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-51-19.mp4 → NAS ✓ 198K
...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"rsync System Audio (output)_2026-05-12_06-51-30.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-51-46.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_06-51-59.mp4 → NAS ✓ 255K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-52-16.mp4 → NAS ✓ 219K\n rsync System Audio (output)_2026-05-12_06-52-27.mp4 → NAS ✓ 252K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-52-45.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_06-52-56.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-53-15.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_06-53-25.mp4 → NAS ✓ 243K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-53-45.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_06-53-54.mp4 → NAS ✓ 259K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-54-15.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_06-54-22.mp4 → NAS ✓ 239K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-54-44.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_06-54-51.mp4 → NAS ✓ 253K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-55-14.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_06-55-21.mp4 → NAS ✓ 249K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-55-44.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_06-55-50.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-56-14.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-12_06-56-19.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-56-44.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-12_06-56-49.mp4 → NAS ✓ 247K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-57-14.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_06-57-17.mp4 → NAS ✓ 241K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-57-44.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_06-57-46.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-58-14.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_06-58-44.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-58-44.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_06-59-13.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-59-13.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_06-59-43.mp4 → NAS ✓ 241K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-59-43.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-12_07-00-12.mp4 → NAS ✓ 258K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-00-13.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_07-00-41.mp4 → NAS ✓ 253K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-00-43.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_07-01-09.mp4 → NAS ✓ 257K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-01-13.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_07-01-37.mp4 → NAS ✓ 252K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-01-42.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_07-02-06.mp4 → NAS ✓ 252K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-02-12.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_07-02-36.mp4 → NAS ✓ 251K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-02-42.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_07-03-04.mp4 → NAS ✓ 257K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-03-12.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_07-03-31.mp4 → NAS ✓ 264K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-03-42.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_07-04-00.mp4 → NAS ✓ 253K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-04-12.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_07-04-29.mp4 → NAS ✓ 236K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-04-42.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_07-04-59.mp4 → NAS ✓ 253K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-05-11.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_07-05-27.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-05-41.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_07-05-57.mp4 → NAS ✓ 244K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-06-11.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_07-06-26.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-06-41.mp4 → NAS ✓ 199K\n rsync System Audio (output)_2026-05-12_07-06-56.mp4 → NAS ✓ 247K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-07-11.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_07-07-24.mp4 → NAS ✓ 235K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-07-40.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_07-07-51.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-08-10.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-12_07-08-20.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-08-40.mp4 → NAS ✓ 225K\n rsync System Audio (output)_2026-05-12_07-08-47.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-09-10.mp4 → NAS ✓ 223K\n rsync System Audio (output)_2026-05-12_07-09-17.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-09-40.mp4 → NAS ✓ 223K\n rsync System Audio (output)_2026-05-12_07-09-45.mp4 → NAS ✓ 249K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-10-09.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_07-10-13.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-10-39.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-12_07-10-42.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-11-09.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_07-11-11.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-11-39.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-12_07-12-09.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-12-09.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_07-12-38.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-12-39.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_07-13-08.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-13-09.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_07-13-38.mp4 → NAS ✓ 106K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-13-39.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-12_07-14-07.mp4 → NAS ✓ 14K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-14-08.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_07-14-36.mp4 → NAS ✓ 44K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-14-38.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-12_07-15-06.mp4 → NAS ✓ 5.0K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-15-08.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_07-15-35.mp4 → NAS ✓ 5.0K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-15-38.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-12_07-16-05.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_07-16-29.mp4 → NAS ✓ 43K\n rsync MacBook Pro Microphone (input)_2026-05-12_07-16-37.mp4 → NAS ✓ 16K\n rsync System Audio (output)_2026-05-12_07-16-35.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-16-47.mp4 → NAS ✓ 10K\n rsync System Audio (output)_2026-05-12_07-17-05.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-17-19.mp4 → NAS ✓ 27K\n rsync System Audio (output)_2026-05-12_07-17-34.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-17-49.mp4 → NAS ✓ 56K\n rsync System Audio (output)_2026-05-12_07-18-04.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-18-19.mp4 → NAS ✓ 66K\n rsync System Audio (output)_2026-05-12_07-18-34.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-18-49.mp4 → NAS ✓ 137K\n rsync System Audio (output)_2026-05-12_07-19-04.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-19-19.mp4 → NAS ✓ 148K\n rsync System Audio (output)_2026-05-12_07-19-33.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-19-49.mp4 → NAS ✓ 93K\n rsync System Audio (output)_2026-05-12_07-20-03.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-20-19.mp4 → NAS ✓ 110K\n rsync System Audio (output)_2026-05-12_07-20-33.mp4 → NAS ✓ 83K\n rsync soundcore AeroClip (input)_2026-05-12_07-20-49.mp4 → NAS ✓ 182K\n rsync System Audio (output)_2026-05-12_07-21-03.mp4 → NAS ✓ 47K\n rsync soundcore AeroClip (input)_2026-05-12_07-21-19.mp4 → NAS ✓ 128K\n rsync System Audio (output)_2026-05-12_07-21-33.mp4 → NAS ✓ 223K\n rsync soundcore AeroClip (input)_2026-05-12_07-21-49.mp4 → NAS ✓ 68K\n rsync System Audio (output)_2026-05-12_07-22-02.mp4 → NAS ✓ 90K\n rsync soundcore AeroClip (input)_2026-05-12_07-22-19.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-22-32.mp4 → NAS ✓ 30K\n rsync soundcore AeroClip (input)_2026-05-12_07-22-49.mp4 → NAS ✓ 19K\n rsync System Audio (output)_2026-05-12_07-23-02.mp4 → NAS ✓ 210K\n rsync soundcore AeroClip (input)_2026-05-12_07-23-19.mp4 → NAS ✓ 27K\n rsync System Audio (output)_2026-05-12_07-23-32.mp4 → NAS ✓ 84K\n rsync soundcore AeroClip (input)_2026-05-12_07-23-49.mp4 → NAS ✓ 22K\n rsync System Audio (output)_2026-05-12_07-24-02.mp4 → NAS ✓ 209K\n rsync soundcore AeroClip (input)_2026-05-12_07-24-19.mp4 → NAS ✓ 33K\n rsync System Audio (output)_2026-05-12_07-24-32.mp4 → NAS ✓ 103K\n rsync soundcore AeroClip (input)_2026-05-12_07-24-49.mp4 → NAS ✓ 55K\n rsync System Audio (output)_2026-05-12_07-25-01.mp4 → NAS ✓ 139K\n rsync soundcore AeroClip (input)_2026-05-12_07-25-19.mp4 → NAS ✓ 20K\n rsync System Audio (output)_2026-05-12_07-25-31.mp4 → NAS ✓ 135K\n rsync soundcore AeroClip (input)_2026-05-12_07-25-49.mp4 → NAS ✓ 13K\n rsync System Audio (output)_2026-05-12_07-26-01.mp4 → NAS ✓ 174K\n rsync soundcore AeroClip (input)_2026-05-12_07-26-19.mp4 → NAS ✓ 14K\n rsync System Audio (output)_2026-05-12_07-26-31.mp4 → NAS ✓ 170K\n rsync soundcore AeroClip (input)_2026-05-12_07-26-49.mp4 → NAS ✓ 29K\n rsync System Audio (output)_2026-05-12_07-27-01.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_07-27-19.mp4 → NAS ✓ 23K\n rsync System Audio (output)_2026-05-12_07-27-31.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-27-49.mp4 → NAS ✓ 44K\n rsync System Audio (output)_2026-05-12_07-28-01.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-28-19.mp4 → NAS ✓ 24K\n rsync System Audio (output)_2026-05-12_07-28-31.mp4 → NAS ✓ 42K\n rsync soundcore AeroClip (input)_2026-05-12_07-28-49.mp4 → NAS ✓ 35K\n rsync System Audio (output)_2026-05-12_07-29-00.mp4 → NAS ✓ 63K\n rsync soundcore AeroClip (input)_2026-05-12_07-29-19.mp4 → NAS ✓ 24K\n rsync System Audio (output)_2026-05-12_07-29-30.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-29-49.mp4 → NAS ✓ 18K\n rsync System Audio (output)_2026-05-12_07-30-00.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-30-19.mp4 → NAS ✓ 42K\n rsync System Audio (output)_2026-05-12_07-30-30.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-30-49.mp4 → NAS ✓ 36K\n rsync System Audio (output)_2026-05-12_07-31-00.mp4 → NAS ✓ 62K\n rsync soundcore AeroClip (input)_2026-05-12_07-31-19.mp4 → NAS ✓ 21K\n rsync System Audio (output)_2026-05-12_07-31-30.mp4 → NAS ✓ 134K\n rsync soundcore AeroClip (input)_2026-05-12_07-31-49.mp4 → NAS ✓ 18K\n rsync System Audio (output)_2026-05-12_07-31-59.mp4 → NAS ✓ 164K\n rsync soundcore AeroClip (input)_2026-05-12_07-32-19.mp4 → NAS ✓ 41K\n rsync System Audio (output)_2026-05-12_07-32-29.mp4 → NAS ✓ 28K\n rsync soundcore AeroClip (input)_2026-05-12_07-32-49.mp4 → NAS ✓ 36K\n rsync System Audio (output)_2026-05-12_07-32-59.mp4 → NAS ✓ 33K\n rsync soundcore AeroClip (input)_2026-05-12_07-33-18.mp4 → NAS ✓ 19K\n rsync System Audio (output)_2026-05-12_07-33-29.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-33-48.mp4 → NAS ✓ 79K\n rsync System Audio (output)_2026-05-12_07-33-58.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-34-18.mp4 → NAS ✓ 82K\n rsync System Audio (output)_2026-05-12_07-34-28.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-34-48.mp4 → NAS ✓ 91K\n rsync System Audio (output)_2026-05-12_07-34-58.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-35-18.mp4 → NAS ✓ 71K\n rsync System Audio (output)_2026-05-12_07-35-28.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-35-48.mp4 → NAS ✓ 45K\n rsync System Audio (output)_2026-05-12_07-35-58.mp4 → NAS ✓ 158K\n rsync soundcore AeroClip (input)_2026-05-12_07-36-18.mp4 → NAS ✓ 23K\n rsync System Audio (output)_2026-05-12_07-36-27.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-36-48.mp4 → NAS ✓ 22K\n rsync System Audio (output)_2026-05-12_07-36-57.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-37-18.mp4 → NAS ✓ 33K\n rsync System Audio (output)_2026-05-12_07-37-27.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-37-48.mp4 → NAS ✓ 19K\n rsync System Audio (output)_2026-05-12_07-37-57.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-38-18.mp4 → NAS ✓ 17K\n rsync System Audio (output)_2026-05-12_07-38-26.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-38-48.mp4 → NAS ✓ 40K\n rsync System Audio (output)_2026-05-12_07-38-56.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-39-18.mp4 → NAS ✓ 25K\n rsync System Audio (output)_2026-05-12_07-39-26.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-39-48.mp4 → NAS ✓ 32K\n rsync System Audio (output)_2026-05-12_07-39-55.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-40-18.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-40-25.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 → NAS ✓ 14K\n rsync System Audio (output)_2026-05-12_07-40-55.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-41-18.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-41-24.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-41-48.mp4 → NAS ✓ 28K\n rsync System Audio (output)_2026-05-12_07-41-54.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-42-18.mp4 → NAS ✓ 45K\n rsync System Audio (output)_2026-05-12_07-42-24.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-42-48.mp4 → NAS ✓ 67K\n rsync System Audio (output)_2026-05-12_07-42-54.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-43-18.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-43-23.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-43-47.mp4 → NAS ✓ 16K\n rsync System Audio (output)_2026-05-12_07-43-53.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_07-44-23.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-44-47.mp4 → NAS ✓ 9.0K\n rsync System Audio (output)_2026-05-12_07-44-53.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-45-19.mp4 → NAS ✓ 37K\n rsync System Audio (output)_2026-05-12_07-45-22.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-45-49.mp4 → NAS ✓ 23K\n rsync System Audio (output)_2026-05-12_07-45-51.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-46-19.mp4 → NAS ✓ 7.0K\n rsync System Audio (output)_2026-05-12_07-46-21.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_07-46-51.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_07-47-21.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-47-19.mp4 → NAS ✓ 7.0K\n rsync System Audio (output)_2026-05-12_07-47-51.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-47-51.mp4 → NAS ✓ 16K\n rsync System Audio (output)_2026-05-12_07-48-21.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-48-21.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-48-50.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-48-51.mp4 → NAS ✓ 14K\n rsync System Audio (output)_2026-05-12_07-49-20.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-49-21.mp4 → NAS ✓ 11K\n rsync System Audio (output)_2026-05-12_07-49-50.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-49-51.mp4 → NAS ✓ 6.0K\n rsync System Audio (output)_2026-05-12_07-50-20.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-50-27.mp4 → NAS ✓ 25K\n rsync System Audio (output)_2026-05-12_07-50-50.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-50-59.mp4 → NAS ✓ 10K\n rsync System Audio (output)_2026-05-12_07-51-19.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-51-29.mp4 → NAS ✓ 12K\n rsync System Audio (output)_2026-05-12_07-51-48.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-51-59.mp4 → NAS ✓ 17K\n rsync System Audio (output)_2026-05-12_07-52-18.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-52-29.mp4 → NAS ✓ 17K\n rsync System Audio (output)_2026-05-12_07-52-48.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-52-59.mp4 → NAS ✓ 13K\n rsync System Audio (output)_2026-05-12_07-53-18.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-53-29.mp4 → NAS ✓ 18K\n rsync System Audio (output)_2026-05-12_07-53-48.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-53-59.mp4 → NAS ✓ 9.0K\n rsync System Audio (output)_2026-05-12_07-54-17.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-54-29.mp4 → NAS ✓ 7.0K\n rsync System Audio (output)_2026-05-12_07-54-47.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-54-59.mp4 → NAS ✓ 12K\n rsync System Audio (output)_2026-05-12_07-55-17.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-55-29.mp4 → NAS ✓ 38K\n rsync System Audio (output)_2026-05-12_07-55-47.mp4 → NAS ✓ 170K\n rsync soundcore AeroClip (input)_2026-05-12_07-55-58.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-12_07-56-16.mp4 → NAS ✓ 194K\n rsync soundcore AeroClip (input)_2026-05-12_07-56-28.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_07-56-45.mp4 → NAS ✓ 196K\n rsync soundcore AeroClip (input)_2026-05-12_07-56-58.mp4 → NAS ✓ 159K\n rsync System Audio (output)_2026-05-12_07-57-15.mp4 → NAS ✓ 230K\n rsync soundcore AeroClip (input)_2026-05-12_07-57-28.mp4 → NAS ✓ 107K\n rsync System Audio (output)_2026-05-12_07-57-44.mp4 → NAS ✓ 238K\n rsync soundcore AeroClip (input)_2026-05-12_07-57-58.mp4 → NAS ✓ 94K\n rsync System Audio (output)_2026-05-12_07-58-14.mp4 → NAS ✓ 229K\n rsync soundcore AeroClip (input)_2026-05-12_07-58-28.mp4 → NAS ✓ 107K\n rsync System Audio (output)_2026-05-12_07-58-44.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_07-58-58.mp4 → NAS ✓ 84K\n rsync System Audio (output)_2026-05-12_07-59-13.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-59-27.mp4 → NAS ✓ 52K\n rsync System Audio (output)_2026-05-12_07-59-43.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-59-57.mp4 → NAS ✓ 65K\n rsync System Audio (output)_2026-05-12_08-00-13.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-00-27.mp4 → NAS ✓ 170K\n rsync System Audio (output)_2026-05-12_08-00-43.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-00-57.mp4 → NAS ✓ 163K\n rsync System Audio (output)_2026-05-12_08-01-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-01-27.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-12_08-01-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-01-57.mp4 → NAS ✓ 219K\n rsync System Audio (output)_2026-05-12_08-02-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-02-27.mp4 → NAS ✓ 161K\n rsync System Audio (output)_2026-05-12_08-02-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-02-57.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-12_08-03-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-03-28.mp4 → NAS ✓ 124K\n rsync System Audio (output)_2026-05-12_08-03-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-03-58.mp4 → NAS ✓ 181K\n rsync System Audio (output)_2026-05-12_08-04-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-04-27.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-12_08-04-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-04-57.mp4 → NAS ✓ 247K\n rsync System Audio (output)_2026-05-12_08-05-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-05-27.mp4 → NAS ✓ 239K\n rsync System Audio (output)_2026-05-12_08-05-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-05-57.mp4 → NAS ✓ 250K\n rsync System Audio (output)_2026-05-12_08-06-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-06-27.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-12_08-06-41.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-06-57.mp4 → NAS ✓ 247K\n rsync System Audio (output)_2026-05-12_08-07-11.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-07-27.mp4 → NAS ✓ 238K\n rsync System Audio (output)_2026-05-12_08-07-41.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-07-57.mp4 → NAS ✓ 136K\n rsync System Audio (output)_2026-05-12_08-08-11.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-08-27.mp4 → NAS ✓ 177K\n rsync System Audio (output)_2026-05-12_08-08-41.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-08-57.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-12_08-09-11.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-09-27.mp4 → NAS ✓ 219K\n rsync soundcore AeroClip (input)_2026-05-12_08-09-57.mp4 → NAS ✓ 245K\n rsync soundcore AeroClip (input)_2026-05-12_08-12-10.mp4 → NAS ✓ 58K\n rsync soundcore AeroClip (input)_2026-05-12_08-12-42.mp4 → NAS ✓ 117K\n rsync soundcore AeroClip (input)_2026-05-12_08-13-12.mp4 → NAS ✓ 67K\n rsync soundcore AeroClip (input)_2026-05-12_08-13-42.mp4 → NAS ✓ 64K\n rsync soundcore AeroClip (input)_2026-05-12_08-14-12.mp4 → NAS ✓ 92K\n rsync soundcore AeroClip (input)_2026-05-12_08-14-42.mp4 → NAS ✓ 60K\n rsync soundcore AeroClip (input)_2026-05-12_08-15-12.mp4 → NAS ✓ 64K\n rsync soundcore AeroClip (input)_2026-05-12_08-15-42.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_08-16-12.mp4 → NAS ✓ 17K\n rsync soundcore AeroClip (input)_2026-05-12_08-16-42.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_08-17-12.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_08-17-42.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-18-12.mp4 → NAS ✓ 7.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-19-13.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-19-45.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_08-20-15.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_08-20-45.mp4 → NAS ✓ 14K\n rsync soundcore AeroClip (input)_2026-05-12_08-21-15.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-21-45.mp4 → NAS ✓ 18K\n rsync soundcore AeroClip (input)_2026-05-12_08-22-15.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-22-45.mp4 → NAS ✓ 17K\n rsync soundcore AeroClip (input)_2026-05-12_08-23-15.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_08-23-45.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-24-15.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_08-24-45.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_08-25-15.mp4 → NAS ✓ 28K\n rsync soundcore AeroClip (input)_2026-05-12_08-25-45.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_08-26-28.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_08-27-00.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_08-27-30.mp4 → NAS ✓ 38K\n rsync soundcore AeroClip (input)_2026-05-12_08-28-00.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_08-28-30.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_08-29-00.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_08-29-30.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_08-30-00.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_08-30-30.mp4 → NAS ✓ 29K\n rsync soundcore AeroClip (input)_2026-05-12_08-31-00.mp4 → NAS ✓ 60K\n rsync soundcore AeroClip (input)_2026-05-12_08-31-30.mp4 → NAS ✓ 124K\n rsync soundcore AeroClip (input)_2026-05-12_08-32-00.mp4 → NAS ✓ 73K\n rsync soundcore AeroClip (input)_2026-05-12_08-32-30.mp4 → NAS ✓ 39K\n rsync soundcore AeroClip (input)_2026-05-12_08-32-59.mp4 → NAS ✓ 52K\n rsync soundcore AeroClip (input)_2026-05-12_08-33-29.mp4 → NAS ✓ 127K\n rsync soundcore AeroClip (input)_2026-05-12_08-33-59.mp4 → NAS ✓ 139K\n rsync soundcore AeroClip (input)_2026-05-12_08-34-29.mp4 → NAS ✓ 169K\n rsync soundcore AeroClip (input)_2026-05-12_08-34-59.mp4 → NAS ✓ 85K\n rsync soundcore AeroClip (input)_2026-05-12_08-35-29.mp4 → NAS ✓ 30K\n rsync soundcore AeroClip (input)_2026-05-12_08-35-59.mp4 → NAS ✓ 34K\n rsync soundcore AeroClip (input)_2026-05-12_08-36-29.mp4 → NAS ✓ 47K\n rsync soundcore AeroClip (input)_2026-05-12_08-37-10.mp4 → NAS ✓ 10K\n rsync soundcore AeroClip (input)_2026-05-12_08-37-42.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-38-12.mp4 → NAS ✓ 123K\n rsync soundcore AeroClip (input)_2026-05-12_08-38-42.mp4 → NAS ✓ 164K\n rsync soundcore AeroClip (input)_2026-05-12_08-39-12.mp4 → NAS ✓ 179K\n rsync soundcore AeroClip (input)_2026-05-12_08-39-42.mp4 → NAS ✓ 176K\n rsync soundcore AeroClip (input)_2026-05-12_08-40-12.mp4 → NAS ✓ 173K\n rsync soundcore AeroClip (input)_2026-05-12_08-40-42.mp4 → NAS ✓ 157K\n rsync soundcore AeroClip (input)_2026-05-12_08-41-12.mp4 → NAS ✓ 101K\n rsync soundcore AeroClip (input)_2026-05-12_08-41-42.mp4 → NAS ✓ 119K\n rsync soundcore AeroClip (input)_2026-05-12_08-42-12.mp4 → NAS ✓ 79K\n rsync soundcore AeroClip (input)_2026-05-12_08-42-42.mp4 → NAS ✓ 14K\n rsync soundcore AeroClip (input)_2026-05-12_08-43-12.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_08-43-42.mp4 → NAS ✓ 25K\n rsync soundcore AeroClip (input)_2026-05-12_08-44-12.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-44-42.mp4 → NAS ✓ 105K\n rsync soundcore AeroClip (input)_2026-05-12_08-45-12.mp4 → NAS ✓ 160K\n rsync soundcore AeroClip (input)_2026-05-12_08-45-41.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_08-46-11.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_08-46-41.mp4 → NAS ✓ 12K\n rsync soundcore AeroClip (input)_2026-05-12_08-47-11.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-47-41.mp4 → NAS ✓ 47K\n rsync soundcore AeroClip (input)_2026-05-12_08-48-11.mp4 → NAS ✓ 83K\n rsync soundcore AeroClip (input)_2026-05-12_08-48-41.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_08-49-11.mp4 → NAS ✓ 40K\n rsync soundcore AeroClip (input)_2026-05-12_08-49-41.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_08-50-11.mp4 → NAS ✓ 17K\n rsync soundcore AeroClip (input)_2026-05-12_08-50-41.mp4 → NAS ✓ 125K\n rsync soundcore AeroClip (input)_2026-05-12_08-51-11.mp4 → NAS ✓ 69K\n rsync soundcore AeroClip (input)_2026-05-12_08-51-41.mp4 → NAS ✓ 67K\n rsync soundcore AeroClip (input)_2026-05-12_08-52-11.mp4 → NAS ✓ 57K\n rsync soundcore AeroClip (input)_2026-05-12_08-52-41.mp4 → NAS ✓ 38K\n rsync soundcore AeroClip (input)_2026-05-12_08-53-11.mp4 → NAS ✓ 29K\n rsync soundcore AeroClip (input)_2026-05-12_08-53-41.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_08-54-11.mp4 → NAS ✓ 29K\n rsync soundcore AeroClip (input)_2026-05-12_08-54-41.mp4 → NAS ✓ 14K\n rsync soundcore AeroClip (input)_2026-05-12_08-55-11.mp4 → NAS ✓ 39K\n rsync soundcore AeroClip (input)_2026-05-12_08-55-41.mp4 → NAS ✓ 25K\n rsync soundcore AeroClip (input)_2026-05-12_08-56-11.mp4 → NAS ✓ 31K\n rsync soundcore AeroClip (input)_2026-05-12_08-56-41.mp4 → NAS ✓ 24K\n rsync soundcore AeroClip (input)_2026-05-12_08-57-11.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_08-57-41.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_08-58-11.mp4 → NAS ✓ 18K\n rsync soundcore AeroClip (input)_2026-05-12_08-58-41.mp4 → NAS ✓ 35K\n rsync soundcore AeroClip (input)_2026-05-12_08-59-11.mp4 → NAS ✓ 35K\n rsync soundcore AeroClip (input)_2026-05-12_08-59-41.mp4 → NAS ✓ 19K\n rsync soundcore AeroClip (input)_2026-05-12_09-00-11.mp4 → NAS ✓ 19K\n rsync soundcore AeroClip (input)_2026-05-12_09-00-41.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_09-01-11.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_09-01-41.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_09-02-11.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-03-07.mp4 → NAS ✓ 32K\n rsync soundcore AeroClip (input)_2026-05-12_09-03-39.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-04-09.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_09-04-39.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-05-12.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_09-05-44.mp4 → NAS ✓ 28K\n rsync soundcore AeroClip (input)_2026-05-12_09-06-14.mp4 → NAS ✓ 60K\n rsync soundcore AeroClip (input)_2026-05-12_09-06-44.mp4 → NAS ✓ 43K\n rsync soundcore AeroClip (input)_2026-05-12_09-07-14.mp4 → NAS ✓ 42K\n rsync soundcore AeroClip (input)_2026-05-12_09-07-44.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_09-08-14.mp4 → NAS ✓ 26K\n rsync soundcore AeroClip (input)_2026-05-12_09-08-44.mp4 → NAS ✓ 36K\n rsync soundcore AeroClip (input)_2026-05-12_09-09-14.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-09-44.mp4 → NAS ✓ 7.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-10-14.mp4 → NAS ✓ 10K\n rsync soundcore AeroClip (input)_2026-05-12_09-10-44.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-11-14.mp4 → NAS ✓ 7.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-11-44.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-12-14.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_09-12-43.mp4 → NAS ✓ 35K\n rsync soundcore AeroClip (input)_2026-05-12_09-13-13.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_09-13-43.mp4 → NAS ✓ 40K\n rsync soundcore AeroClip (input)_2026-05-12_09-14-13.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-14-43.mp4 → NAS ✓ 24K\n rsync soundcore AeroClip (input)_2026-05-12_09-15-13.mp4 → NAS ✓ 29K\n rsync soundcore AeroClip (input)_2026-05-12_09-15-43.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-16-13.mp4 → NAS ✓ 26K\n rsync soundcore AeroClip (input)_2026-05-12_09-16-43.mp4 → NAS ✓ 24K\n rsync soundcore AeroClip (input)_2026-05-12_09-17-13.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_09-17-43.mp4 → NAS ✓ 33K\n rsync soundcore AeroClip (input)_2026-05-12_09-18-13.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_09-18-43.mp4 → NAS ✓ 30K\n rsync soundcore AeroClip (input)_2026-05-12_09-19-12.mp4 → NAS ✓ 12K\n rsync soundcore AeroClip (input)_2026-05-12_09-19-42.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-20-18.mp4 → NAS ✓ 12K\n rsync soundcore AeroClip (input)_2026-05-12_09-20-50.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-21-20.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-21-59.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-22-31.mp4 → NAS ✓ 12K\n rsync soundcore AeroClip (input)_2026-05-12_09-23-01.mp4 → NAS ✓ 28K\n rsync soundcore AeroClip (input)_2026-05-12_09-24-02.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-24-34.mp4 → NAS ✓ 30K\n rsync soundcore AeroClip (input)_2026-05-12_09-25-04.mp4 → NAS ✓ 53K\n rsync soundcore AeroClip (input)_2026-05-12_09-25-34.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_09-26-04.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-26-34.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_09-27-04.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_09-27-34.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_09-28-04.mp4 → NAS ✓ 19K\n rsync soundcore AeroClip (input)_2026-05-12_09-28-34.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_09-29-04.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_09-29-34.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_09-30-04.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_09-30-34.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_09-31-04.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_09-31-33.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-32-03.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-32-33.mp4 → NAS ✓ 55K\n rsync soundcore AeroClip (input)_2026-05-12_09-33-03.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_09-33-33.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_09-34-03.mp4 → NAS ✓ 17K\n rsync soundcore AeroClip (input)_2026-05-12_09-34-33.mp4 → NAS ✓ 63K\n rsync soundcore AeroClip (input)_2026-05-12_09-35-03.mp4 → NAS ✓ 57K\n rsync soundcore AeroClip (input)_2026-05-12_09-35-33.mp4 → NAS ✓ 64K\n rsync soundcore AeroClip (input)_2026-05-12_09-36-03.mp4 → NAS ✓ 70K\n rsync soundcore AeroClip (input)_2026-05-12_09-36-33.mp4 → NAS ✓ 56K\n rsync soundcore AeroClip (input)_2026-05-12_09-37-03.mp4 → NAS ✓ 86K\n rsync soundcore AeroClip (input)_2026-05-12_09-37-33.mp4 → NAS ✓ 66K\n rsync soundcore AeroClip (input)_2026-05-12_09-38-03.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_09-38-33.mp4 → NAS ✓ 19K\n rsync soundcore AeroClip (input)_2026-05-12_09-39-28.mp4 → NAS ✓ 34K\n rsync soundcore AeroClip (input)_2026-05-12_09-40-00.mp4 → NAS ✓ 53K\n rsync soundcore AeroClip (input)_2026-05-12_09-40-30.mp4 → NAS ✓ 50K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-41-30.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-42-02.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-42-32.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-43-02.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-43-32.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-44-02.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-44-32.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-45-02.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-45-32.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-46-02.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-46-32.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-47-01.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-47-31.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-48-01.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-48-31.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-49-01.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-49-31.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-50-01.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-50-31.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-51-01.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-51-31.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-52-01.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-52-31.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-53-00.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-53-30.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-54-00.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-54-30.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-55-00.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-55-30.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-01-32.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-02-01.mp4 → NAS ✓ 221K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-02-30.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-03-00.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-03-29.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-03-59.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-04-29.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-04-59.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-05-29.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-05-59.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-06-29.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-06-59.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-07-29.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-07-59.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-08-28.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-08-58.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-09-28.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-09-58.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-10-28.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-10-58.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-11-28.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-11-58.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-12-28.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-12-58.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-13-28.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-13-58.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-14-28.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-14-58.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-15-28.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-15-57.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-16-27.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-16-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-17-27.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-17-57.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-18-27.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-18-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-19-27.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-19-57.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-28-53.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-29-24.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-29-53.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-30-23.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-30-53.mp4 → NAS ✓ 218K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-31-23.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-31-53.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-32-23.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-32-53.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-33-23.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-33-53.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-34-22.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-34-52.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-35-22.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-35-52.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-36-22.mp4 → NAS ✓ 226K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-36-52.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-37-22.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-37-52.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-38-22.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-38-52.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-39-22.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-39-51.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-40-21.mp4 → NAS ✓ 218K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-40-51.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-41-21.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-41-51.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-42-21.mp4 → NAS ✓ 219K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-42-51.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-43-21.mp4 → NAS ✓ 223K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-43-50.mp4 → NAS ✓ 233K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-44-20.mp4 → NAS ✓ 222K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-44-50.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-45-20.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-45-50.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-46-20.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-46-50.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-47-19.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-47-49.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-48-19.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-48-49.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-49-19.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-49-49.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-50-19.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-50-49.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-51-19.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-51-49.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-52-19.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-52-49.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-53-19.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-53-48.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-54-18.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-54-48.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-55-18.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-55-48.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-56-18.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-56-48.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-57-18.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-57-48.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-58-18.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-58-48.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-59-18.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-59-47.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-00-17.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-00-47.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-01-17.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-01-47.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-02-17.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-02-47.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-03-17.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-03-47.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-04-17.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-04-47.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-05-17.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-05-46.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-06-16.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-06-46.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-07-16.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-07-46.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-08-16.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-08-46.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-09-16.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-09-46.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-10-16.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-10-46.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-11-16.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-11-46.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-12-15.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-12-45.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-13-15.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-13-45.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-14-15.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-14-45.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-15-15.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-15-45.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-16-15.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-16-45.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-17-14.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-17-44.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-18-14.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-18-44.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-19-14.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-19-44.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-20-14.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-20-44.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-21-14.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-21-44.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-22-14.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-22-44.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-23-14.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-23-44.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-24-14.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-24-43.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-25-13.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-25-43.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-26-13.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-26-43.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-27-13.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-27-43.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-28-13.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-28-43.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-29-12.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-29-42.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-30-12.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-30-42.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-31-11.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-31-41.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-32-11.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-32-41.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-33-10.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-33-40.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-34-10.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-34-40.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-35-10.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-35-40.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-36-09.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-36-39.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-37-09.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-37-39.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-38-09.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-38-39.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-39-09.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-39-39.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-40-09.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-40-39.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-41-09.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-41-39.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-42-09.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-42-38.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-43-08.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-43-38.mp4 → NAS ✓ 219K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-44-08.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-44-37.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-45-07.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-45-36.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-46-05.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-46-35.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-47-05.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-47-34.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-48-03.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-48-33.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-49-03.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-49-33.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-50-03.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-50-33.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-51-02.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-51-32.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-52-01.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-52-31.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-53-01.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-53-30.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-54-00.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-54-30.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-55-00.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-55-29.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-55-59.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-56-29.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-56-59.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-57-29.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-57-59.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-58-28.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-58-58.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-59-28.mp4 → NAS ✓ 218K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-59-58.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-00-27.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-00-57.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-01-27.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-01-57.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-02-27.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-02-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-03-27.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-03-57.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-04-27.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-04-57.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-05-26.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-05-56.mp4 → NAS ✓ 226K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-06-26.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-06-56.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-07-26.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-07-56.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-08-26.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-08-55.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-09-25.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-09-55.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-10-25.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-10-55.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-11-25.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-11-55.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-12-24.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-12-54.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-13-24.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-13-53.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-14-23.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-14-53.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-15-23.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-15-53.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-16-23.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-16-53.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-17-53.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-18-22.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-18-52.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-19-22.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-19-52.mp4 → NAS ✓ 227K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-20-21.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-20-51.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-21-21.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-21-51.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-22-21.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-22-51.mp4 → NAS ✓ 242K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-59-11.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-59-41.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_13-00-11.mp4 → NAS ✓ 194K\n rsync MacBook Pro Microphone (input)_2026-05-12_13-35-39.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-08-11.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-10-40.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-15-09.mp4 → NAS ✓ 198K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-21-38.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-22-38.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-21-56.mp4 → NAS ✓ 195K\n rsync System Audio (output)_2026-05-12_17-21-56.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_17-22-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-22-28.mp4 → NAS ✓ 195K\n rsync System Audio (output)_2026-05-12_17-22-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-22-58.mp4 → NAS ✓ 196K\n rsync System Audio (output)_2026-05-12_17-23-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-23-28.mp4 → NAS ✓ 200K\n rsync System Audio (output)_2026-05-12_17-23-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-23-58.mp4 → NAS ✓ 196K\n rsync System Audio (output)_2026-05-12_17-24-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-24-28.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-24-58.mp4 → NAS ✓ 199K\n rsync System Audio (output)_2026-05-12_17-24-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-25-28.mp4 → NAS ✓ 195K\n rsync System Audio (output)_2026-05-12_17-25-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-25-58.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_17-25-58.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_17-26-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-26-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-26-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-26-58.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_17-27-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-27-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-27-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-27-58.mp4 → NAS ✓ 194K\n rsync System Audio (output)_2026-05-12_17-28-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-28-28.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_17-28-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-28-58.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-29-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-29-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-29-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-29-58.mp4 → NAS ✓ 203K\n rsync System Audio (output)_2026-05-12_17-30-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-30-28.mp4 → NAS ✓ 196K\n rsync System Audio (output)_2026-05-12_17-30-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-30-58.mp4 → NAS ✓ 212K\n rsync System Audio (output)_2026-05-12_17-31-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-31-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-31-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-31-58.mp4 → NAS ✓ 199K\n rsync System Audio (output)_2026-05-12_17-32-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-32-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-32-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-32-58.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_17-33-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-33-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-33-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-33-58.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_17-34-28.mp4 → NAS ✓ 8.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-34-28.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_17-34-58.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-34-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-35-28.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-35-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-35-58.mp4 → NAS ✓ 8.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-35-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-36-28.mp4 → NAS ✓ 15K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-36-28.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-36-58.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-36-58.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-12_17-37-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-37-28.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-12_17-37-58.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-37-58.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_17-38-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-38-28.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_17-38-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-38-58.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-39-28.mp4 → NAS ✓ 12K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-39-28.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-12_17-39-58.mp4 → NAS ✓ 7.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-39-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-40-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-40-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-40-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-40-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-41-28.mp4 → NAS ✓ 9.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-41-28.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-12_17-41-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-41-58.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-42-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-42-28.mp4 → NAS ✓ 203K\n rsync System Audio (output)_2026-05-12_17-42-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-42-58.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_17-43-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-43-28.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-12_17-43-58.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-43-58.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-44-28.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-44-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-44-58.mp4 → NAS ✓ 7.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-44-58.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-45-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-45-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-45-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-45-58.mp4 → NAS ✓ 200K\n rsync System Audio (output)_2026-05-12_17-46-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-46-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-46-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-46-58.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-47-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-47-28.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_17-47-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-47-58.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-48-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-48-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-48-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-48-58.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-49-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-49-28.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-49-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-49-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-50-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-50-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-50-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-50-58.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_17-51-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-51-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-51-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-51-58.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_17-52-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-52-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-52-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-52-58.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-53-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-53-28.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-12_17-53-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-53-58.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-54-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-54-28.mp4 → NAS ✓ 219K\n rsync System Audio (output)_2026-05-12_17-54-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-54-58.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-55-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-55-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-55-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-55-58.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-56-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-56-28.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-58-58.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-59-28.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-00-28.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-00-58.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-01-58.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-04-58.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-08-27.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-09-27.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-09-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-10-27.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-10-57.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-11-27.mp4 → NAS ✓ 218K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-11-57.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-12-57.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-14-57.mp4 → NAS ✓ 228K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-15-27.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-15-57.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-16-57.mp4 → NAS ✓ 221K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-19-27.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-19-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-20-27.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-20-56.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-21-26.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-21-56.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-22-26.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-22-56.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-23-26.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-23-56.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-24-26.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-24-56.mp4 → NAS ✓ 217K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-25-56.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-26-26.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-26-56.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-28-26.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-28-56.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-29-56.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-30-56.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-31-56.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-32-26.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-32-56.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-33-56.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-34-56.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-35-26.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-35-56.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-36-26.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-36-56.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-37-26.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-37-56.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-38-26.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-38-56.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-39-26.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-39-56.mp4 → NAS ✓ 195K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-40-26.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-40-56.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-41-26.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-42-26.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-43-26.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-44-26.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-45-26.mp4 → NAS ✓ 207K\n audio files total: 1113 file(s), 145M\n\n[+09m26s] ▶ Copying screenpipe logs for 2026-05-12\n rsync logs → NAS ✓ 1 file(s), 288K\n\n[2026-05-13 21:46:00] Archive DB size: 2.0G\n[2026-05-13 21:46:00] Total time: 9m26s\n[2026-05-13 21:46:00] Sync complete for 2026-05-12\n[2026-05-13 21:46:00] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-12","depth":4,"on_screen":true,"value":"rsync System Audio (output)_2026-05-12_06-51-30.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-51-46.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_06-51-59.mp4 → NAS ✓ 255K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-52-16.mp4 → NAS ✓ 219K\n rsync System Audio (output)_2026-05-12_06-52-27.mp4 → NAS ✓ 252K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-52-45.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_06-52-56.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-53-15.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_06-53-25.mp4 → NAS ✓ 243K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-53-45.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_06-53-54.mp4 → NAS ✓ 259K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-54-15.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_06-54-22.mp4 → NAS ✓ 239K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-54-44.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_06-54-51.mp4 → NAS ✓ 253K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-55-14.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_06-55-21.mp4 → NAS ✓ 249K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-55-44.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_06-55-50.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-56-14.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-12_06-56-19.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-56-44.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-12_06-56-49.mp4 → NAS ✓ 247K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-57-14.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_06-57-17.mp4 → NAS ✓ 241K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-57-44.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_06-57-46.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-58-14.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_06-58-44.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-58-44.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_06-59-13.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-59-13.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_06-59-43.mp4 → NAS ✓ 241K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-59-43.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-12_07-00-12.mp4 → NAS ✓ 258K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-00-13.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_07-00-41.mp4 → NAS ✓ 253K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-00-43.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_07-01-09.mp4 → NAS ✓ 257K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-01-13.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_07-01-37.mp4 → NAS ✓ 252K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-01-42.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_07-02-06.mp4 → NAS ✓ 252K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-02-12.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_07-02-36.mp4 → NAS ✓ 251K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-02-42.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_07-03-04.mp4 → NAS ✓ 257K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-03-12.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_07-03-31.mp4 → NAS ✓ 264K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-03-42.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_07-04-00.mp4 → NAS ✓ 253K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-04-12.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_07-04-29.mp4 → NAS ✓ 236K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-04-42.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_07-04-59.mp4 → NAS ✓ 253K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-05-11.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_07-05-27.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-05-41.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_07-05-57.mp4 → NAS ✓ 244K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-06-11.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_07-06-26.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-06-41.mp4 → NAS ✓ 199K\n rsync System Audio (output)_2026-05-12_07-06-56.mp4 → NAS ✓ 247K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-07-11.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_07-07-24.mp4 → NAS ✓ 235K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-07-40.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_07-07-51.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-08-10.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-12_07-08-20.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-08-40.mp4 → NAS ✓ 225K\n rsync System Audio (output)_2026-05-12_07-08-47.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-09-10.mp4 → NAS ✓ 223K\n rsync System Audio (output)_2026-05-12_07-09-17.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-09-40.mp4 → NAS ✓ 223K\n rsync System Audio (output)_2026-05-12_07-09-45.mp4 → NAS ✓ 249K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-10-09.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_07-10-13.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-10-39.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-12_07-10-42.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-11-09.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_07-11-11.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-11-39.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-12_07-12-09.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-12-09.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_07-12-38.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-12-39.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_07-13-08.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-13-09.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_07-13-38.mp4 → NAS ✓ 106K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-13-39.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-12_07-14-07.mp4 → NAS ✓ 14K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-14-08.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_07-14-36.mp4 → NAS ✓ 44K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-14-38.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-12_07-15-06.mp4 → NAS ✓ 5.0K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-15-08.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_07-15-35.mp4 → NAS ✓ 5.0K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-15-38.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-12_07-16-05.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_07-16-29.mp4 → NAS ✓ 43K\n rsync MacBook Pro Microphone (input)_2026-05-12_07-16-37.mp4 → NAS ✓ 16K\n rsync System Audio (output)_2026-05-12_07-16-35.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-16-47.mp4 → NAS ✓ 10K\n rsync System Audio (output)_2026-05-12_07-17-05.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-17-19.mp4 → NAS ✓ 27K\n rsync System Audio (output)_2026-05-12_07-17-34.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-17-49.mp4 → NAS ✓ 56K\n rsync System Audio (output)_2026-05-12_07-18-04.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-18-19.mp4 → NAS ✓ 66K\n rsync System Audio (output)_2026-05-12_07-18-34.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-18-49.mp4 → NAS ✓ 137K\n rsync System Audio (output)_2026-05-12_07-19-04.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-19-19.mp4 → NAS ✓ 148K\n rsync System Audio (output)_2026-05-12_07-19-33.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-19-49.mp4 → NAS ✓ 93K\n rsync System Audio (output)_2026-05-12_07-20-03.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-20-19.mp4 → NAS ✓ 110K\n rsync System Audio (output)_2026-05-12_07-20-33.mp4 → NAS ✓ 83K\n rsync soundcore AeroClip (input)_2026-05-12_07-20-49.mp4 → NAS ✓ 182K\n rsync System Audio (output)_2026-05-12_07-21-03.mp4 → NAS ✓ 47K\n rsync soundcore AeroClip (input)_2026-05-12_07-21-19.mp4 → NAS ✓ 128K\n rsync System Audio (output)_2026-05-12_07-21-33.mp4 → NAS ✓ 223K\n rsync soundcore AeroClip (input)_2026-05-12_07-21-49.mp4 → NAS ✓ 68K\n rsync System Audio (output)_2026-05-12_07-22-02.mp4 → NAS ✓ 90K\n rsync soundcore AeroClip (input)_2026-05-12_07-22-19.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-22-32.mp4 → NAS ✓ 30K\n rsync soundcore AeroClip (input)_2026-05-12_07-22-49.mp4 → NAS ✓ 19K\n rsync System Audio (output)_2026-05-12_07-23-02.mp4 → NAS ✓ 210K\n rsync soundcore AeroClip (input)_2026-05-12_07-23-19.mp4 → NAS ✓ 27K\n rsync System Audio (output)_2026-05-12_07-23-32.mp4 → NAS ✓ 84K\n rsync soundcore AeroClip (input)_2026-05-12_07-23-49.mp4 → NAS ✓ 22K\n rsync System Audio (output)_2026-05-12_07-24-02.mp4 → NAS ✓ 209K\n rsync soundcore AeroClip (input)_2026-05-12_07-24-19.mp4 → NAS ✓ 33K\n rsync System Audio (output)_2026-05-12_07-24-32.mp4 → NAS ✓ 103K\n rsync soundcore AeroClip (input)_2026-05-12_07-24-49.mp4 → NAS ✓ 55K\n rsync System Audio (output)_2026-05-12_07-25-01.mp4 → NAS ✓ 139K\n rsync soundcore AeroClip (input)_2026-05-12_07-25-19.mp4 → NAS ✓ 20K\n rsync System Audio (output)_2026-05-12_07-25-31.mp4 → NAS ✓ 135K\n rsync soundcore AeroClip (input)_2026-05-12_07-25-49.mp4 → NAS ✓ 13K\n rsync System Audio (output)_2026-05-12_07-26-01.mp4 → NAS ✓ 174K\n rsync soundcore AeroClip (input)_2026-05-12_07-26-19.mp4 → NAS ✓ 14K\n rsync System Audio (output)_2026-05-12_07-26-31.mp4 → NAS ✓ 170K\n rsync soundcore AeroClip (input)_2026-05-12_07-26-49.mp4 → NAS ✓ 29K\n rsync System Audio (output)_2026-05-12_07-27-01.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_07-27-19.mp4 → NAS ✓ 23K\n rsync System Audio (output)_2026-05-12_07-27-31.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-27-49.mp4 → NAS ✓ 44K\n rsync System Audio (output)_2026-05-12_07-28-01.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-28-19.mp4 → NAS ✓ 24K\n rsync System Audio (output)_2026-05-12_07-28-31.mp4 → NAS ✓ 42K\n rsync soundcore AeroClip (input)_2026-05-12_07-28-49.mp4 → NAS ✓ 35K\n rsync System Audio (output)_2026-05-12_07-29-00.mp4 → NAS ✓ 63K\n rsync soundcore AeroClip (input)_2026-05-12_07-29-19.mp4 → NAS ✓ 24K\n rsync System Audio (output)_2026-05-12_07-29-30.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-29-49.mp4 → NAS ✓ 18K\n rsync System Audio (output)_2026-05-12_07-30-00.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-30-19.mp4 → NAS ✓ 42K\n rsync System Audio (output)_2026-05-12_07-30-30.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-30-49.mp4 → NAS ✓ 36K\n rsync System Audio (output)_2026-05-12_07-31-00.mp4 → NAS ✓ 62K\n rsync soundcore AeroClip (input)_2026-05-12_07-31-19.mp4 → NAS ✓ 21K\n rsync System Audio (output)_2026-05-12_07-31-30.mp4 → NAS ✓ 134K\n rsync soundcore AeroClip (input)_2026-05-12_07-31-49.mp4 → NAS ✓ 18K\n rsync System Audio (output)_2026-05-12_07-31-59.mp4 → NAS ✓ 164K\n rsync soundcore AeroClip (input)_2026-05-12_07-32-19.mp4 → NAS ✓ 41K\n rsync System Audio (output)_2026-05-12_07-32-29.mp4 → NAS ✓ 28K\n rsync soundcore AeroClip (input)_2026-05-12_07-32-49.mp4 → NAS ✓ 36K\n rsync System Audio (output)_2026-05-12_07-32-59.mp4 → NAS ✓ 33K\n rsync soundcore AeroClip (input)_2026-05-12_07-33-18.mp4 → NAS ✓ 19K\n rsync System Audio (output)_2026-05-12_07-33-29.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-33-48.mp4 → NAS ✓ 79K\n rsync System Audio (output)_2026-05-12_07-33-58.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-34-18.mp4 → NAS ✓ 82K\n rsync System Audio (output)_2026-05-12_07-34-28.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-34-48.mp4 → NAS ✓ 91K\n rsync System Audio (output)_2026-05-12_07-34-58.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-35-18.mp4 → NAS ✓ 71K\n rsync System Audio (output)_2026-05-12_07-35-28.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-35-48.mp4 → NAS ✓ 45K\n rsync System Audio (output)_2026-05-12_07-35-58.mp4 → NAS ✓ 158K\n rsync soundcore AeroClip (input)_2026-05-12_07-36-18.mp4 → NAS ✓ 23K\n rsync System Audio (output)_2026-05-12_07-36-27.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-36-48.mp4 → NAS ✓ 22K\n rsync System Audio (output)_2026-05-12_07-36-57.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-37-18.mp4 → NAS ✓ 33K\n rsync System Audio (output)_2026-05-12_07-37-27.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-37-48.mp4 → NAS ✓ 19K\n rsync System Audio (output)_2026-05-12_07-37-57.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-38-18.mp4 → NAS ✓ 17K\n rsync System Audio (output)_2026-05-12_07-38-26.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-38-48.mp4 → NAS ✓ 40K\n rsync System Audio (output)_2026-05-12_07-38-56.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-39-18.mp4 → NAS ✓ 25K\n rsync System Audio (output)_2026-05-12_07-39-26.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-39-48.mp4 → NAS ✓ 32K\n rsync System Audio (output)_2026-05-12_07-39-55.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-40-18.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-40-25.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 → NAS ✓ 14K\n rsync System Audio (output)_2026-05-12_07-40-55.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-41-18.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-41-24.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-41-48.mp4 → NAS ✓ 28K\n rsync System Audio (output)_2026-05-12_07-41-54.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-42-18.mp4 → NAS ✓ 45K\n rsync System Audio (output)_2026-05-12_07-42-24.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-42-48.mp4 → NAS ✓ 67K\n rsync System Audio (output)_2026-05-12_07-42-54.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-43-18.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-43-23.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-43-47.mp4 → NAS ✓ 16K\n rsync System Audio (output)_2026-05-12_07-43-53.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_07-44-23.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-44-47.mp4 → NAS ✓ 9.0K\n rsync System Audio (output)_2026-05-12_07-44-53.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-45-19.mp4 → NAS ✓ 37K\n rsync System Audio (output)_2026-05-12_07-45-22.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-45-49.mp4 → NAS ✓ 23K\n rsync System Audio (output)_2026-05-12_07-45-51.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-46-19.mp4 → NAS ✓ 7.0K\n rsync System Audio (output)_2026-05-12_07-46-21.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_07-46-51.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_07-47-21.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-47-19.mp4 → NAS ✓ 7.0K\n rsync System Audio (output)_2026-05-12_07-47-51.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-47-51.mp4 → NAS ✓ 16K\n rsync System Audio (output)_2026-05-12_07-48-21.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-48-21.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-48-50.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-48-51.mp4 → NAS ✓ 14K\n rsync System Audio (output)_2026-05-12_07-49-20.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-49-21.mp4 → NAS ✓ 11K\n rsync System Audio (output)_2026-05-12_07-49-50.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-49-51.mp4 → NAS ✓ 6.0K\n rsync System Audio (output)_2026-05-12_07-50-20.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-50-27.mp4 → NAS ✓ 25K\n rsync System Audio (output)_2026-05-12_07-50-50.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-50-59.mp4 → NAS ✓ 10K\n rsync System Audio (output)_2026-05-12_07-51-19.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-51-29.mp4 → NAS ✓ 12K\n rsync System Audio (output)_2026-05-12_07-51-48.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-51-59.mp4 → NAS ✓ 17K\n rsync System Audio (output)_2026-05-12_07-52-18.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-52-29.mp4 → NAS ✓ 17K\n rsync System Audio (output)_2026-05-12_07-52-48.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-52-59.mp4 → NAS ✓ 13K\n rsync System Audio (output)_2026-05-12_07-53-18.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-53-29.mp4 → NAS ✓ 18K\n rsync System Audio (output)_2026-05-12_07-53-48.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-53-59.mp4 → NAS ✓ 9.0K\n rsync System Audio (output)_2026-05-12_07-54-17.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-54-29.mp4 → NAS ✓ 7.0K\n rsync System Audio (output)_2026-05-12_07-54-47.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-54-59.mp4 → NAS ✓ 12K\n rsync System Audio (output)_2026-05-12_07-55-17.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-55-29.mp4 → NAS ✓ 38K\n rsync System Audio (output)_2026-05-12_07-55-47.mp4 → NAS ✓ 170K\n rsync soundcore AeroClip (input)_2026-05-12_07-55-58.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-12_07-56-16.mp4 → NAS ✓ 194K\n rsync soundcore AeroClip (input)_2026-05-12_07-56-28.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_07-56-45.mp4 → NAS ✓ 196K\n rsync soundcore AeroClip (input)_2026-05-12_07-56-58.mp4 → NAS ✓ 159K\n rsync System Audio (output)_2026-05-12_07-57-15.mp4 → NAS ✓ 230K\n rsync soundcore AeroClip (input)_2026-05-12_07-57-28.mp4 → NAS ✓ 107K\n rsync System Audio (output)_2026-05-12_07-57-44.mp4 → NAS ✓ 238K\n rsync soundcore AeroClip (input)_2026-05-12_07-57-58.mp4 → NAS ✓ 94K\n rsync System Audio (output)_2026-05-12_07-58-14.mp4 → NAS ✓ 229K\n rsync soundcore AeroClip (input)_2026-05-12_07-58-28.mp4 → NAS ✓ 107K\n rsync System Audio (output)_2026-05-12_07-58-44.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_07-58-58.mp4 → NAS ✓ 84K\n rsync System Audio (output)_2026-05-12_07-59-13.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-59-27.mp4 → NAS ✓ 52K\n rsync System Audio (output)_2026-05-12_07-59-43.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-59-57.mp4 → NAS ✓ 65K\n rsync System Audio (output)_2026-05-12_08-00-13.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-00-27.mp4 → NAS ✓ 170K\n rsync System Audio (output)_2026-05-12_08-00-43.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-00-57.mp4 → NAS ✓ 163K\n rsync System Audio (output)_2026-05-12_08-01-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-01-27.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-12_08-01-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-01-57.mp4 → NAS ✓ 219K\n rsync System Audio (output)_2026-05-12_08-02-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-02-27.mp4 → NAS ✓ 161K\n rsync System Audio (output)_2026-05-12_08-02-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-02-57.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-12_08-03-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-03-28.mp4 → NAS ✓ 124K\n rsync System Audio (output)_2026-05-12_08-03-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-03-58.mp4 → NAS ✓ 181K\n rsync System Audio (output)_2026-05-12_08-04-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-04-27.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-12_08-04-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-04-57.mp4 → NAS ✓ 247K\n rsync System Audio (output)_2026-05-12_08-05-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-05-27.mp4 → NAS ✓ 239K\n rsync System Audio (output)_2026-05-12_08-05-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-05-57.mp4 → NAS ✓ 250K\n rsync System Audio (output)_2026-05-12_08-06-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-06-27.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-12_08-06-41.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-06-57.mp4 → NAS ✓ 247K\n rsync System Audio (output)_2026-05-12_08-07-11.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-07-27.mp4 → NAS ✓ 238K\n rsync System Audio (output)_2026-05-12_08-07-41.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-07-57.mp4 → NAS ✓ 136K\n rsync System Audio (output)_2026-05-12_08-08-11.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-08-27.mp4 → NAS ✓ 177K\n rsync System Audio (output)_2026-05-12_08-08-41.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-08-57.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-12_08-09-11.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-09-27.mp4 → NAS ✓ 219K\n rsync soundcore AeroClip (input)_2026-05-12_08-09-57.mp4 → NAS ✓ 245K\n rsync soundcore AeroClip (input)_2026-05-12_08-12-10.mp4 → NAS ✓ 58K\n rsync soundcore AeroClip (input)_2026-05-12_08-12-42.mp4 → NAS ✓ 117K\n rsync soundcore AeroClip (input)_2026-05-12_08-13-12.mp4 → NAS ✓ 67K\n rsync soundcore AeroClip (input)_2026-05-12_08-13-42.mp4 → NAS ✓ 64K\n rsync soundcore AeroClip (input)_2026-05-12_08-14-12.mp4 → NAS ✓ 92K\n rsync soundcore AeroClip (input)_2026-05-12_08-14-42.mp4 → NAS ✓ 60K\n rsync soundcore AeroClip (input)_2026-05-12_08-15-12.mp4 → NAS ✓ 64K\n rsync soundcore AeroClip (input)_2026-05-12_08-15-42.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_08-16-12.mp4 → NAS ✓ 17K\n rsync soundcore AeroClip (input)_2026-05-12_08-16-42.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_08-17-12.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_08-17-42.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-18-12.mp4 → NAS ✓ 7.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-19-13.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-19-45.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_08-20-15.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_08-20-45.mp4 → NAS ✓ 14K\n rsync soundcore AeroClip (input)_2026-05-12_08-21-15.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-21-45.mp4 → NAS ✓ 18K\n rsync soundcore AeroClip (input)_2026-05-12_08-22-15.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-22-45.mp4 → NAS ✓ 17K\n rsync soundcore AeroClip (input)_2026-05-12_08-23-15.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_08-23-45.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-24-15.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_08-24-45.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_08-25-15.mp4 → NAS ✓ 28K\n rsync soundcore AeroClip (input)_2026-05-12_08-25-45.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_08-26-28.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_08-27-00.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_08-27-30.mp4 → NAS ✓ 38K\n rsync soundcore AeroClip (input)_2026-05-12_08-28-00.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_08-28-30.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_08-29-00.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_08-29-30.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_08-30-00.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_08-30-30.mp4 → NAS ✓ 29K\n rsync soundcore AeroClip (input)_2026-05-12_08-31-00.mp4 → NAS ✓ 60K\n rsync soundcore AeroClip (input)_2026-05-12_08-31-30.mp4 → NAS ✓ 124K\n rsync soundcore AeroClip (input)_2026-05-12_08-32-00.mp4 → NAS ✓ 73K\n rsync soundcore AeroClip (input)_2026-05-12_08-32-30.mp4 → NAS ✓ 39K\n rsync soundcore AeroClip (input)_2026-05-12_08-32-59.mp4 → NAS ✓ 52K\n rsync soundcore AeroClip (input)_2026-05-12_08-33-29.mp4 → NAS ✓ 127K\n rsync soundcore AeroClip (input)_2026-05-12_08-33-59.mp4 → NAS ✓ 139K\n rsync soundcore AeroClip (input)_2026-05-12_08-34-29.mp4 → NAS ✓ 169K\n rsync soundcore AeroClip (input)_2026-05-12_08-34-59.mp4 → NAS ✓ 85K\n rsync soundcore AeroClip (input)_2026-05-12_08-35-29.mp4 → NAS ✓ 30K\n rsync soundcore AeroClip (input)_2026-05-12_08-35-59.mp4 → NAS ✓ 34K\n rsync soundcore AeroClip (input)_2026-05-12_08-36-29.mp4 → NAS ✓ 47K\n rsync soundcore AeroClip (input)_2026-05-12_08-37-10.mp4 → NAS ✓ 10K\n rsync soundcore AeroClip (input)_2026-05-12_08-37-42.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-38-12.mp4 → NAS ✓ 123K\n rsync soundcore AeroClip (input)_2026-05-12_08-38-42.mp4 → NAS ✓ 164K\n rsync soundcore AeroClip (input)_2026-05-12_08-39-12.mp4 → NAS ✓ 179K\n rsync soundcore AeroClip (input)_2026-05-12_08-39-42.mp4 → NAS ✓ 176K\n rsync soundcore AeroClip (input)_2026-05-12_08-40-12.mp4 → NAS ✓ 173K\n rsync soundcore AeroClip (input)_2026-05-12_08-40-42.mp4 → NAS ✓ 157K\n rsync soundcore AeroClip (input)_2026-05-12_08-41-12.mp4 → NAS ✓ 101K\n rsync soundcore AeroClip (input)_2026-05-12_08-41-42.mp4 → NAS ✓ 119K\n rsync soundcore AeroClip (input)_2026-05-12_08-42-12.mp4 → NAS ✓ 79K\n rsync soundcore AeroClip (input)_2026-05-12_08-42-42.mp4 → NAS ✓ 14K\n rsync soundcore AeroClip (input)_2026-05-12_08-43-12.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_08-43-42.mp4 → NAS ✓ 25K\n rsync soundcore AeroClip (input)_2026-05-12_08-44-12.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-44-42.mp4 → NAS ✓ 105K\n rsync soundcore AeroClip (input)_2026-05-12_08-45-12.mp4 → NAS ✓ 160K\n rsync soundcore AeroClip (input)_2026-05-12_08-45-41.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_08-46-11.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_08-46-41.mp4 → NAS ✓ 12K\n rsync soundcore AeroClip (input)_2026-05-12_08-47-11.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-47-41.mp4 → NAS ✓ 47K\n rsync soundcore AeroClip (input)_2026-05-12_08-48-11.mp4 → NAS ✓ 83K\n rsync soundcore AeroClip (input)_2026-05-12_08-48-41.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_08-49-11.mp4 → NAS ✓ 40K\n rsync soundcore AeroClip (input)_2026-05-12_08-49-41.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_08-50-11.mp4 → NAS ✓ 17K\n rsync soundcore AeroClip (input)_2026-05-12_08-50-41.mp4 → NAS ✓ 125K\n rsync soundcore AeroClip (input)_2026-05-12_08-51-11.mp4 → NAS ✓ 69K\n rsync soundcore AeroClip (input)_2026-05-12_08-51-41.mp4 → NAS ✓ 67K\n rsync soundcore AeroClip (input)_2026-05-12_08-52-11.mp4 → NAS ✓ 57K\n rsync soundcore AeroClip (input)_2026-05-12_08-52-41.mp4 → NAS ✓ 38K\n rsync soundcore AeroClip (input)_2026-05-12_08-53-11.mp4 → NAS ✓ 29K\n rsync soundcore AeroClip (input)_2026-05-12_08-53-41.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_08-54-11.mp4 → NAS ✓ 29K\n rsync soundcore AeroClip (input)_2026-05-12_08-54-41.mp4 → NAS ✓ 14K\n rsync soundcore AeroClip (input)_2026-05-12_08-55-11.mp4 → NAS ✓ 39K\n rsync soundcore AeroClip (input)_2026-05-12_08-55-41.mp4 → NAS ✓ 25K\n rsync soundcore AeroClip (input)_2026-05-12_08-56-11.mp4 → NAS ✓ 31K\n rsync soundcore AeroClip (input)_2026-05-12_08-56-41.mp4 → NAS ✓ 24K\n rsync soundcore AeroClip (input)_2026-05-12_08-57-11.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_08-57-41.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_08-58-11.mp4 → NAS ✓ 18K\n rsync soundcore AeroClip (input)_2026-05-12_08-58-41.mp4 → NAS ✓ 35K\n rsync soundcore AeroClip (input)_2026-05-12_08-59-11.mp4 → NAS ✓ 35K\n rsync soundcore AeroClip (input)_2026-05-12_08-59-41.mp4 → NAS ✓ 19K\n rsync soundcore AeroClip (input)_2026-05-12_09-00-11.mp4 → NAS ✓ 19K\n rsync soundcore AeroClip (input)_2026-05-12_09-00-41.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_09-01-11.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_09-01-41.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_09-02-11.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-03-07.mp4 → NAS ✓ 32K\n rsync soundcore AeroClip (input)_2026-05-12_09-03-39.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-04-09.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_09-04-39.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-05-12.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_09-05-44.mp4 → NAS ✓ 28K\n rsync soundcore AeroClip (input)_2026-05-12_09-06-14.mp4 → NAS ✓ 60K\n rsync soundcore AeroClip (input)_2026-05-12_09-06-44.mp4 → NAS ✓ 43K\n rsync soundcore AeroClip (input)_2026-05-12_09-07-14.mp4 → NAS ✓ 42K\n rsync soundcore AeroClip (input)_2026-05-12_09-07-44.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_09-08-14.mp4 → NAS ✓ 26K\n rsync soundcore AeroClip (input)_2026-05-12_09-08-44.mp4 → NAS ✓ 36K\n rsync soundcore AeroClip (input)_2026-05-12_09-09-14.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-09-44.mp4 → NAS ✓ 7.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-10-14.mp4 → NAS ✓ 10K\n rsync soundcore AeroClip (input)_2026-05-12_09-10-44.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-11-14.mp4 → NAS ✓ 7.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-11-44.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-12-14.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_09-12-43.mp4 → NAS ✓ 35K\n rsync soundcore AeroClip (input)_2026-05-12_09-13-13.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_09-13-43.mp4 → NAS ✓ 40K\n rsync soundcore AeroClip (input)_2026-05-12_09-14-13.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-14-43.mp4 → NAS ✓ 24K\n rsync soundcore AeroClip (input)_2026-05-12_09-15-13.mp4 → NAS ✓ 29K\n rsync soundcore AeroClip (input)_2026-05-12_09-15-43.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-16-13.mp4 → NAS ✓ 26K\n rsync soundcore AeroClip (input)_2026-05-12_09-16-43.mp4 → NAS ✓ 24K\n rsync soundcore AeroClip (input)_2026-05-12_09-17-13.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_09-17-43.mp4 → NAS ✓ 33K\n rsync soundcore AeroClip (input)_2026-05-12_09-18-13.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_09-18-43.mp4 → NAS ✓ 30K\n rsync soundcore AeroClip (input)_2026-05-12_09-19-12.mp4 → NAS ✓ 12K\n rsync soundcore AeroClip (input)_2026-05-12_09-19-42.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-20-18.mp4 → NAS ✓ 12K\n rsync soundcore AeroClip (input)_2026-05-12_09-20-50.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-21-20.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-21-59.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-22-31.mp4 → NAS ✓ 12K\n rsync soundcore AeroClip (input)_2026-05-12_09-23-01.mp4 → NAS ✓ 28K\n rsync soundcore AeroClip (input)_2026-05-12_09-24-02.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-24-34.mp4 → NAS ✓ 30K\n rsync soundcore AeroClip (input)_2026-05-12_09-25-04.mp4 → NAS ✓ 53K\n rsync soundcore AeroClip (input)_2026-05-12_09-25-34.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_09-26-04.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-26-34.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_09-27-04.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_09-27-34.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_09-28-04.mp4 → NAS ✓ 19K\n rsync soundcore AeroClip (input)_2026-05-12_09-28-34.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_09-29-04.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_09-29-34.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_09-30-04.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_09-30-34.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_09-31-04.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_09-31-33.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-32-03.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-32-33.mp4 → NAS ✓ 55K\n rsync soundcore AeroClip (input)_2026-05-12_09-33-03.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_09-33-33.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_09-34-03.mp4 → NAS ✓ 17K\n rsync soundcore AeroClip (input)_2026-05-12_09-34-33.mp4 → NAS ✓ 63K\n rsync soundcore AeroClip (input)_2026-05-12_09-35-03.mp4 → NAS ✓ 57K\n rsync soundcore AeroClip (input)_2026-05-12_09-35-33.mp4 → NAS ✓ 64K\n rsync soundcore AeroClip (input)_2026-05-12_09-36-03.mp4 → NAS ✓ 70K\n rsync soundcore AeroClip (input)_2026-05-12_09-36-33.mp4 → NAS ✓ 56K\n rsync soundcore AeroClip (input)_2026-05-12_09-37-03.mp4 → NAS ✓ 86K\n rsync soundcore AeroClip (input)_2026-05-12_09-37-33.mp4 → NAS ✓ 66K\n rsync soundcore AeroClip (input)_2026-05-12_09-38-03.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_09-38-33.mp4 → NAS ✓ 19K\n rsync soundcore AeroClip (input)_2026-05-12_09-39-28.mp4 → NAS ✓ 34K\n rsync soundcore AeroClip (input)_2026-05-12_09-40-00.mp4 → NAS ✓ 53K\n rsync soundcore AeroClip (input)_2026-05-12_09-40-30.mp4 → NAS ✓ 50K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-41-30.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-42-02.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-42-32.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-43-02.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-43-32.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-44-02.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-44-32.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-45-02.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-45-32.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-46-02.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-46-32.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-47-01.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-47-31.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-48-01.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-48-31.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-49-01.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-49-31.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-50-01.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-50-31.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-51-01.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-51-31.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-52-01.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-52-31.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-53-00.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-53-30.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-54-00.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-54-30.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-55-00.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-55-30.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-01-32.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-02-01.mp4 → NAS ✓ 221K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-02-30.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-03-00.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-03-29.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-03-59.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-04-29.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-04-59.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-05-29.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-05-59.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-06-29.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-06-59.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-07-29.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-07-59.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-08-28.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-08-58.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-09-28.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-09-58.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-10-28.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-10-58.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-11-28.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-11-58.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-12-28.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-12-58.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-13-28.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-13-58.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-14-28.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-14-58.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-15-28.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-15-57.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-16-27.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-16-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-17-27.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-17-57.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-18-27.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-18-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-19-27.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-19-57.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-28-53.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-29-24.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-29-53.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-30-23.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-30-53.mp4 → NAS ✓ 218K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-31-23.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-31-53.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-32-23.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-32-53.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-33-23.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-33-53.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-34-22.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-34-52.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-35-22.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-35-52.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-36-22.mp4 → NAS ✓ 226K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-36-52.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-37-22.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-37-52.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-38-22.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-38-52.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-39-22.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-39-51.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-40-21.mp4 → NAS ✓ 218K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-40-51.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-41-21.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-41-51.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-42-21.mp4 → NAS ✓ 219K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-42-51.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-43-21.mp4 → NAS ✓ 223K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-43-50.mp4 → NAS ✓ 233K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-44-20.mp4 → NAS ✓ 222K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-44-50.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-45-20.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-45-50.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-46-20.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-46-50.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-47-19.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-47-49.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-48-19.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-48-49.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-49-19.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-49-49.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-50-19.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-50-49.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-51-19.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-51-49.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-52-19.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-52-49.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-53-19.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-53-48.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-54-18.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-54-48.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-55-18.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-55-48.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-56-18.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-56-48.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-57-18.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-57-48.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-58-18.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-58-48.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-59-18.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-59-47.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-00-17.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-00-47.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-01-17.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-01-47.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-02-17.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-02-47.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-03-17.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-03-47.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-04-17.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-04-47.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-05-17.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-05-46.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-06-16.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-06-46.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-07-16.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-07-46.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-08-16.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-08-46.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-09-16.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-09-46.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-10-16.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-10-46.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-11-16.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-11-46.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-12-15.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-12-45.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-13-15.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-13-45.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-14-15.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-14-45.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-15-15.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-15-45.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-16-15.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-16-45.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-17-14.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-17-44.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-18-14.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-18-44.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-19-14.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-19-44.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-20-14.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-20-44.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-21-14.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-21-44.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-22-14.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-22-44.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-23-14.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-23-44.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-24-14.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-24-43.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-25-13.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-25-43.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-26-13.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-26-43.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-27-13.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-27-43.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-28-13.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-28-43.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-29-12.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-29-42.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-30-12.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-30-42.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-31-11.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-31-41.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-32-11.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-32-41.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-33-10.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-33-40.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-34-10.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-34-40.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-35-10.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-35-40.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-36-09.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-36-39.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-37-09.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-37-39.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-38-09.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-38-39.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-39-09.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-39-39.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-40-09.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-40-39.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-41-09.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-41-39.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-42-09.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-42-38.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-43-08.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-43-38.mp4 → NAS ✓ 219K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-44-08.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-44-37.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-45-07.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-45-36.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-46-05.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-46-35.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-47-05.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-47-34.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-48-03.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-48-33.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-49-03.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-49-33.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-50-03.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-50-33.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-51-02.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-51-32.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-52-01.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-52-31.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-53-01.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-53-30.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-54-00.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-54-30.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-55-00.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-55-29.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-55-59.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-56-29.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-56-59.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-57-29.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-57-59.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-58-28.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-58-58.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-59-28.mp4 → NAS ✓ 218K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-59-58.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-00-27.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-00-57.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-01-27.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-01-57.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-02-27.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-02-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-03-27.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-03-57.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-04-27.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-04-57.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-05-26.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-05-56.mp4 → NAS ✓ 226K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-06-26.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-06-56.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-07-26.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-07-56.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-08-26.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-08-55.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-09-25.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-09-55.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-10-25.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-10-55.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-11-25.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-11-55.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-12-24.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-12-54.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-13-24.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-13-53.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-14-23.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-14-53.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-15-23.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-15-53.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-16-23.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-16-53.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-17-53.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-18-22.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-18-52.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-19-22.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-19-52.mp4 → NAS ✓ 227K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-20-21.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-20-51.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-21-21.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-21-51.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-22-21.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-22-51.mp4 → NAS ✓ 242K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-59-11.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-59-41.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_13-00-11.mp4 → NAS ✓ 194K\n rsync MacBook Pro Microphone (input)_2026-05-12_13-35-39.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-08-11.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-10-40.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-15-09.mp4 → NAS ✓ 198K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-21-38.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-22-38.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-21-56.mp4 → NAS ✓ 195K\n rsync System Audio (output)_2026-05-12_17-21-56.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_17-22-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-22-28.mp4 → NAS ✓ 195K\n rsync System Audio (output)_2026-05-12_17-22-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-22-58.mp4 → NAS ✓ 196K\n rsync System Audio (output)_2026-05-12_17-23-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-23-28.mp4 → NAS ✓ 200K\n rsync System Audio (output)_2026-05-12_17-23-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-23-58.mp4 → NAS ✓ 196K\n rsync System Audio (output)_2026-05-12_17-24-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-24-28.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-24-58.mp4 → NAS ✓ 199K\n rsync System Audio (output)_2026-05-12_17-24-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-25-28.mp4 → NAS ✓ 195K\n rsync System Audio (output)_2026-05-12_17-25-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-25-58.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_17-25-58.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_17-26-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-26-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-26-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-26-58.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_17-27-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-27-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-27-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-27-58.mp4 → NAS ✓ 194K\n rsync System Audio (output)_2026-05-12_17-28-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-28-28.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_17-28-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-28-58.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-29-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-29-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-29-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-29-58.mp4 → NAS ✓ 203K\n rsync System Audio (output)_2026-05-12_17-30-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-30-28.mp4 → NAS ✓ 196K\n rsync System Audio (output)_2026-05-12_17-30-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-30-58.mp4 → NAS ✓ 212K\n rsync System Audio (output)_2026-05-12_17-31-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-31-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-31-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-31-58.mp4 → NAS ✓ 199K\n rsync System Audio (output)_2026-05-12_17-32-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-32-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-32-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-32-58.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_17-33-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-33-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-33-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-33-58.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_17-34-28.mp4 → NAS ✓ 8.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-34-28.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_17-34-58.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-34-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-35-28.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-35-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-35-58.mp4 → NAS ✓ 8.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-35-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-36-28.mp4 → NAS ✓ 15K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-36-28.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-36-58.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-36-58.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-12_17-37-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-37-28.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-12_17-37-58.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-37-58.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_17-38-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-38-28.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_17-38-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-38-58.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-39-28.mp4 → NAS ✓ 12K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-39-28.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-12_17-39-58.mp4 → NAS ✓ 7.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-39-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-40-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-40-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-40-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-40-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-41-28.mp4 → NAS ✓ 9.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-41-28.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-12_17-41-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-41-58.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-42-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-42-28.mp4 → NAS ✓ 203K\n rsync System Audio (output)_2026-05-12_17-42-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-42-58.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_17-43-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-43-28.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-12_17-43-58.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-43-58.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-44-28.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-44-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-44-58.mp4 → NAS ✓ 7.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-44-58.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-45-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-45-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-45-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-45-58.mp4 → NAS ✓ 200K\n rsync System Audio (output)_2026-05-12_17-46-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-46-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-46-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-46-58.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-47-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-47-28.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_17-47-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-47-58.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-48-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-48-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-48-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-48-58.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-49-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-49-28.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-49-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-49-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-50-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-50-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-50-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-50-58.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_17-51-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-51-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-51-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-51-58.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_17-52-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-52-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-52-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-52-58.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-53-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-53-28.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-12_17-53-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-53-58.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-54-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-54-28.mp4 → NAS ✓ 219K\n rsync System Audio (output)_2026-05-12_17-54-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-54-58.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-55-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-55-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-55-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-55-58.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-56-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-56-28.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-58-58.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-59-28.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-00-28.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-00-58.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-01-58.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-04-58.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-08-27.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-09-27.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-09-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-10-27.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-10-57.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-11-27.mp4 → NAS ✓ 218K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-11-57.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-12-57.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-14-57.mp4 → NAS ✓ 228K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-15-27.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-15-57.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-16-57.mp4 → NAS ✓ 221K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-19-27.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-19-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-20-27.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-20-56.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-21-26.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-21-56.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-22-26.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-22-56.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-23-26.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-23-56.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-24-26.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-24-56.mp4 → NAS ✓ 217K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-25-56.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-26-26.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-26-56.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-28-26.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-28-56.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-29-56.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-30-56.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-31-56.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-32-26.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-32-56.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-33-56.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-34-56.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-35-26.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-35-56.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-36-26.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-36-56.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-37-26.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-37-56.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-38-26.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-38-56.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-39-26.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-39-56.mp4 → NAS ✓ 195K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-40-26.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-40-56.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-41-26.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-42-26.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-43-26.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-44-26.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-45-26.mp4 → NAS ✓ 207K\n audio files total: 1113 file(s), 145M\n\n[+09m26s] ▶ Copying screenpipe logs for 2026-05-12\n rsync logs → NAS ✓ 1 file(s), 288K\n\n[2026-05-13 21:46:00] Archive DB size: 2.0G\n[2026-05-13 21:46:00] Total time: 9m26s\n[2026-05-13 21:46:00] Sync complete for 2026-05-12\n[2026-05-13 21:46:00] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-12","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.14097223,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.14097223,"top":0.05888889,"width":0.140625,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14513889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28159723,"top":0.05888889,"width":0.140625,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.2857639,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.42222223,"top":0.05888889,"width":0.140625,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.4263889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.5628472,"top":0.05888889,"width":0.140625,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56701386,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-129-190:~ (-zsh)","depth":2,"bounds":{"left":0.7034722,"top":0.05888889,"width":0.140625,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70763886,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-20-31-146:~ (-zsh)","depth":2,"bounds":{"left":0.8440972,"top":0.05888889,"width":0.140625,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.84826386,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95625,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"ec2-user@ip-10-30-129-190:~","depth":1,"bounds":{"left":0.42916667,"top":0.033333335,"width":0.14305556,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
3676283881892293262
|
4383911395047157063
|
visual_change
|
accessibility
|
NULL
|
rsync System Audio (output)_2026-05-12_06-51-30.mp rsync System Audio (output)_2026-05-12_06-51-30.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-51-46.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_06-51-59.mp4 → NAS ✓ 255K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-52-16.mp4 → NAS ✓ 219K
rsync System Audio (output)_2026-05-12_06-52-27.mp4 → NAS ✓ 252K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-52-45.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_06-52-56.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-53-15.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_06-53-25.mp4 → NAS ✓ 243K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-53-45.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-12_06-53-54.mp4 → NAS ✓ 259K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-54-15.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-12_06-54-22.mp4 → NAS ✓ 239K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-54-44.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-12_06-54-51.mp4 → NAS ✓ 253K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-55-14.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-12_06-55-21.mp4 → NAS ✓ 249K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-55-44.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_06-55-50.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-56-14.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-12_06-56-19.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-56-44.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-12_06-56-49.mp4 → NAS ✓ 247K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-57-14.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_06-57-17.mp4 → NAS ✓ 241K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-57-44.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-12_06-57-46.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-58-14.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_06-58-44.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-58-44.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_06-59-13.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-59-13.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_06-59-43.mp4 → NAS ✓ 241K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-59-43.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-12_07-00-12.mp4 → NAS ✓ 258K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-00-13.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_07-00-41.mp4 → NAS ✓ 253K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-00-43.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_07-01-09.mp4 → NAS ✓ 257K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-01-13.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-12_07-01-37.mp4 → NAS ✓ 252K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-01-42.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_07-02-06.mp4 → NAS ✓ 252K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-02-12.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_07-02-36.mp4 → NAS ✓ 251K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-02-42.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_07-03-04.mp4 → NAS ✓ 257K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-03-12.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_07-03-31.mp4 → NAS ✓ 264K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-03-42.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-12_07-04-00.mp4 → NAS ✓ 253K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-04-12.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_07-04-29.mp4 → NAS ✓ 236K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-04-42.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-12_07-04-59.mp4 → NAS ✓ 253K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-05-11.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_07-05-27.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-05-41.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-12_07-05-57.mp4 → NAS ✓ 244K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-06-11.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_07-06-26.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-06-41.mp4 → NAS ✓ 199K
rsync System Audio (output)_2026-05-12_07-06-56.mp4 → NAS ✓ 247K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-07-11.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-12_07-07-24.mp4 → NAS ✓ 235K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-07-40.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_07-07-51.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-08-10.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-12_07-08-20.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-08-40.mp4 → NAS ✓ 225K
rsync System Audio (output)_2026-05-12_07-08-47.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-09-10.mp4 → NAS ✓ 223K
rsync System Audio (output)_2026-05-12_07-09-17.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-09-40.mp4 → NAS ✓ 223K
rsync System Audio (output)_2026-05-12_07-09-45.mp4 → NAS ✓ 249K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-10-09.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-12_07-10-13.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-10-39.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-12_07-10-42.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-11-09.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-12_07-11-11.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-11-39.mp4 → NAS ✓ 215K
rsync System Audio (output)_2026-05-12_07-12-09.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-12-09.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-12_07-12-38.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-12-39.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-12_07-13-08.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-13-09.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-12_07-13-38.mp4 → NAS ✓ 106K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-13-39.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-12_07-14-07.mp4 → NAS ✓ 14K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-14-08.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-12_07-14-36.mp4 → NAS ✓ 44K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-14-38.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-12_07-15-06.mp4 → NAS ✓ 5.0K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-15-08.mp4 → NAS ✓ 210K
rsync System Audio (output)_2026-05-12_07-15-35.mp4 → NAS ✓ 5.0K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-15-38.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-12_07-16-05.mp4 → NAS ✓ 5.0K
rsync MacBook Pro Microphone (input)_2026-05-12_07-16-29.mp4 → NAS ✓ 43K
rsync MacBook Pro Microphone (input)_2026-05-12_07-16-37.mp4 → NAS ✓ 16K
rsync System Audio (output)_2026-05-12_07-16-35.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-16-47.mp4 → NAS ✓ 10K
rsync System Audio (output)_2026-05-12_07-17-05.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-17-19.mp4 → NAS ✓ 27K
rsync System Audio (output)_2026-05-12_07-17-34.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-17-49.mp4 → NAS ✓ 56K
rsync System Audio (output)_2026-05-12_07-18-04.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-18-19.mp4 → NAS ✓ 66K
rsync System Audio (output)_2026-05-12_07-18-34.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-18-49.mp4 → NAS ✓ 137K
rsync System Audio (output)_2026-05-12_07-19-04.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-19-19.mp4 → NAS ✓ 148K
rsync System Audio (output)_2026-05-12_07-19-33.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-19-49.mp4 → NAS ✓ 93K
rsync System Audio (output)_2026-05-12_07-20-03.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-20-19.mp4 → NAS ✓ 110K
rsync System Audio (output)_2026-05-12_07-20-33.mp4 → NAS ✓ 83K
rsync soundcore AeroClip (input)_2026-05-12_07-20-49.mp4 → NAS ✓ 182K
rsync System Audio (output)_2026-05-12_07-21-03.mp4 → NAS ✓ 47K
rsync soundcore AeroClip (input)_2026-05-12_07-21-19.mp4 → NAS ✓ 128K
rsync System Audio (output)_2026-05-12_07-21-33.mp4 → NAS ✓ 223K
rsync soundcore AeroClip (input)_2026-05-12_07-21-49.mp4 → NAS ✓ 68K
rsync System Audio (output)_2026-05-12_07-22-02.mp4 → NAS ✓ 90K
rsync soundcore AeroClip (input)_2026-05-12_07-22-19.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-22-32.mp4 → NAS ✓ 30K
rsync soundcore AeroClip (input)_2026-05-12_07-22-49.mp4 → NAS ✓ 19K
rsync System Audio (output)_2026-05-12_07-23-02.mp4 → NAS ✓ 210K
rsync soundcore AeroClip (input)_2026-05-12_07-23-19.mp4 → NAS ✓ 27K
rsync System Audio (output)_2026-05-12_07-23-32.mp4 → NAS ✓ 84K
rsync soundcore AeroClip (input)_2026-05-12_07-23-49.mp4 → NAS ✓ 22K
rsync System Audio (output)_2026-05-12_07-24-02.mp4 → NAS ✓ 209K
rsync soundcore AeroClip (input)_2026-05-12_07-24-19.mp4 → NAS ✓ 33K
rsync System Audio (output)_2026-05-12_07-24-32.mp4 → NAS ✓ 103K
rsync soundcore AeroClip (input)_2026-05-12_07-24-49.mp4 → NAS ✓ 55K
rsync System Audio (output)_2026-05-12_07-25-01.mp4 → NAS ✓ 139K
rsync soundcore AeroClip (input)_2026-05-12_07-25-19.mp4 → NAS ✓ 20K
rsync System Audio (output)_2026-05-12_07-25-31.mp4 → NAS ✓ 135K
rsync soundcore AeroClip (input)_2026-05-12_07-25-49.mp4 → NAS ✓ 13K
rsync System Audio (output)_2026-05-12_07-26-01.mp4 → NAS ✓ 174K
rsync soundcore AeroClip (input)_2026-05-12_07-26-19.mp4 → NAS ✓ 14K
rsync System Audio (output)_2026-05-12_07-26-31.mp4 → NAS ✓ 170K
rsync soundcore AeroClip (input)_2026-05-12_07-26-49.mp4 → NAS ✓ 29K
rsync System Audio (output)_2026-05-12_07-27-01.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_07-27-19.mp4 → NAS ✓ 23K
rsync System Audio (output)_2026-05-12_07-27-31.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-27-49.mp4 → NAS ✓ 44K
rsync System Audio (output)_2026-05-12_07-28-01.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-28-19.mp4 → NAS ✓ 24K
rsync System Audio (output)_2026-05-12_07-28-31.mp4 → NAS ✓ 42K
rsync soundcore AeroClip (input)_2026-05-12_07-28-49.mp4 → NAS ✓ 35K
rsync System Audio (output)_2026-05-12_07-29-00.mp4 → NAS ✓ 63K
rsync soundcore AeroClip (input)_2026-05-12_07-29-19.mp4 → NAS ✓ 24K
rsync System Audio (output)_2026-05-12_07-29-30.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-29-49.mp4 → NAS ✓ 18K
rsync System Audio (output)_2026-05-12_07-30-00.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-30-19.mp4 → NAS ✓ 42K
rsync System Audio (output)_2026-05-12_07-30-30.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-30-49.mp4 → NAS ✓ 36K
rsync System Audio (output)_2026-05-12_07-31-00.mp4 → NAS ✓ 62K
rsync soundcore AeroClip (input)_2026-05-12_07-31-19.mp4 → NAS ✓ 21K
rsync System Audio (output)_2026-05-12_07-31-30.mp4 → NAS ✓ 134K
rsync soundcore AeroClip (input)_2026-05-12_07-31-49.mp4 → NAS ✓ 18K
rsync System Audio (output)_2026-05-12_07-31-59.mp4 → NAS ✓ 164K
rsync soundcore AeroClip (input)_2026-05-12_07-32-19.mp4 → NAS ✓ 41K
rsync System Audio (output)_2026-05-12_07-32-29.mp4 → NAS ✓ 28K
rsync soundcore AeroClip (input)_2026-05-12_07-32-49.mp4 → NAS ✓ 36K
rsync System Audio (output)_2026-05-12_07-32-59.mp4 → NAS ✓ 33K
rsync soundcore AeroClip (input)_2026-05-12_07-33-18.mp4 → NAS ✓ 19K
rsync System Audio (output)_2026-05-12_07-33-29.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-33-48.mp4 → NAS ✓ 79K
rsync System Audio (output)_2026-05-12_07-33-58.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-34-18.mp4 → NAS ✓ 82K
rsync System Audio (output)_2026-05-12_07-34-28.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-34-48.mp4 → NAS ✓ 91K
rsync System Audio (output)_2026-05-12_07-34-58.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-35-18.mp4 → NAS ✓ 71K
rsync System Audio (output)_2026-05-12_07-35-28.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-35-48.mp4 → NAS ✓ 45K
rsync System Audio (output)_2026-05-12_07-35-58.mp4 → NAS ✓ 158K
rsync soundcore AeroClip (input)_2026-05-12_07-36-18.mp4 → NAS ✓ 23K
rsync System Audio (output)_2026-05-12_07-36-27.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-36-48.mp4 → NAS ✓ 22K
rsync System Audio (output)_2026-05-12_07-36-57.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-37-18.mp4 → NAS ✓ 33K
rsync System Audio (output)_2026-05-12_07-37-27.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-37-48.mp4 → NAS ✓ 19K
rsync System Audio (output)_2026-05-12_07-37-57.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-38-18.mp4 → NAS ✓ 17K
rsync System Audio (output)_2026-05-12_07-38-26.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-38-48.mp4 → NAS ✓ 40K
rsync System Audio (output)_2026-05-12_07-38-56.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-39-18.mp4 → NAS ✓ 25K
rsync System Audio (output)_2026-05-12_07-39-26.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-39-48.mp4 → NAS ✓ 32K
rsync System Audio (output)_2026-05-12_07-39-55.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-40-18.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-40-25.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 → NAS ✓ 14K
rsync System Audio (output)_2026-05-12_07-40-55.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-41-18.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-41-24.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-41-48.mp4 → NAS ✓ 28K
rsync System Audio (output)_2026-05-12_07-41-54.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-42-18.mp4 → NAS ✓ 45K
rsync System Audio (output)_2026-05-12_07-42-24.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-42-48.mp4 → NAS ✓ 67K
rsync System Audio (output)_2026-05-12_07-42-54.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-43-18.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-43-23.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-43-47.mp4 → NAS ✓ 16K
rsync System Audio (output)_2026-05-12_07-43-53.mp4 → NAS ✓ 5.0K
rsync System Audio (output)_2026-05-12_07-44-23.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-44-47.mp4 → NAS ✓ 9.0K
rsync System Audio (output)_2026-05-12_07-44-53.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-45-19.mp4 → NAS ✓ 37K
rsync System Audio (output)_2026-05-12_07-45-22.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-45-49.mp4 → NAS ✓ 23K
rsync System Audio (output)_2026-05-12_07-45-51.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-46-19.mp4 → NAS ✓ 7.0K
rsync System Audio (output)_2026-05-12_07-46-21.mp4 → NAS ✓ 5.0K
rsync System Audio (output)_2026-05-12_07-46-51.mp4 → NAS ✓ 5.0K
rsync System Audio (output)_2026-05-12_07-47-21.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-47-19.mp4 → NAS ✓ 7.0K
rsync System Audio (output)_2026-05-12_07-47-51.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-47-51.mp4 → NAS ✓ 16K
rsync System Audio (output)_2026-05-12_07-48-21.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-48-21.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-48-50.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-48-51.mp4 → NAS ✓ 14K
rsync System Audio (output)_2026-05-12_07-49-20.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-49-21.mp4 → NAS ✓ 11K
rsync System Audio (output)_2026-05-12_07-49-50.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-49-51.mp4 → NAS ✓ 6.0K
rsync System Audio (output)_2026-05-12_07-50-20.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-50-27.mp4 → NAS ✓ 25K
rsync System Audio (output)_2026-05-12_07-50-50.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-50-59.mp4 → NAS ✓ 10K
rsync System Audio (output)_2026-05-12_07-51-19.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-51-29.mp4 → NAS ✓ 12K
rsync System Audio (output)_2026-05-12_07-51-48.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-51-59.mp4 → NAS ✓ 17K
rsync System Audio (output)_2026-05-12_07-52-18.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-52-29.mp4 → NAS ✓ 17K
rsync System Audio (output)_2026-05-12_07-52-48.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-52-59.mp4 → NAS ✓ 13K
rsync System Audio (output)_2026-05-12_07-53-18.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-53-29.mp4 → NAS ✓ 18K
rsync System Audio (output)_2026-05-12_07-53-48.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-53-59.mp4 → NAS ✓ 9.0K
rsync System Audio (output)_2026-05-12_07-54-17.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-54-29.mp4 → NAS ✓ 7.0K
rsync System Audio (output)_2026-05-12_07-54-47.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-54-59.mp4 → NAS ✓ 12K
rsync System Audio (output)_2026-05-12_07-55-17.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-55-29.mp4 → NAS ✓ 38K
rsync System Audio (output)_2026-05-12_07-55-47.mp4 → NAS ✓ 170K
rsync soundcore AeroClip (input)_2026-05-12_07-55-58.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-12_07-56-16.mp4 → NAS ✓ 194K
rsync soundcore AeroClip (input)_2026-05-12_07-56-28.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-12_07-56-45.mp4 → NAS ✓ 196K
rsync soundcore AeroClip (input)_2026-05-12_07-56-58.mp4 → NAS ✓ 159K
rsync System Audio (output)_2026-05-12_07-57-15.mp4 → NAS ✓ 230K
rsync soundcore AeroClip (input)_2026-05-12_07-57-28.mp4 → NAS ✓ 107K
rsync System Audio (output)_2026-05-12_07-57-44.mp4 → NAS ✓ 238K
rsync soundcore AeroClip (input)_2026-05-12_07-57-58.mp4 → NAS ✓ 94K
rsync System Audio (output)_2026-05-12_07-58-14.mp4 → NAS ✓ 229K
rsync soundcore AeroClip (input)_2026-05-12_07-58-28.mp4 → NAS ✓ 107K
rsync System Audio (output)_2026-05-12_07-58-44.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_07-58-58.mp4 → NAS ✓ 84K
rsync System Audio (output)_2026-05-12_07-59-13.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-59-27.mp4 → NAS ✓ 52K
rsync System Audio (output)_2026-05-12_07-59-43.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-59-57.mp4 → NAS ✓ 65K
rsync System Audio (output)_2026-05-12_08-00-13.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-00-27.mp4 → NAS ✓ 170K
rsync System Audio (output)_2026-05-12_08-00-43.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-00-57.mp4 → NAS ✓ 163K
rsync System Audio (output)_2026-05-12_08-01-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-01-27.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-12_08-01-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-01-57.mp4 → NAS ✓ 219K
rsync System Audio (output)_2026-05-12_08-02-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-02-27.mp4 → NAS ✓ 161K
rsync System Audio (output)_2026-05-12_08-02-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-02-57.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-12_08-03-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-03-28.mp4 → NAS ✓ 124K
rsync System Audio (output)_2026-05-12_08-03-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-03-58.mp4 → NAS ✓ 181K
rsync System Audio (output)_2026-05-12_08-04-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-04-27.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-12_08-04-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-04-57.mp4 → NAS ✓ 247K
rsync System Audio (output)_2026-05-12_08-05-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-05-27.mp4 → NAS ✓ 239K
rsync System Audio (output)_2026-05-12_08-05-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-05-57.mp4 → NAS ✓ 250K
rsync System Audio (output)_2026-05-12_08-06-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-06-27.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-12_08-06-41.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-06-57.mp4 → NAS ✓ 247K
rsync System Audio (output)_2026-05-12_08-07-11.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-07-27.mp4 → NAS ✓ 238K
rsync System Audio (output)_2026-05-12_08-07-41.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-07-57.mp4 → NAS ✓ 136K
rsync System Audio (output)_2026-05-12_08-08-11.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-08-27.mp4 → NAS ✓ 177K
rsync System Audio (output)_2026-05-12_08-08-41.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-08-57.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-12_08-09-11.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-09-27.mp4 → NAS ✓ 219K
rsync soundcore AeroClip (input)_2026-05-12_08-09-57.mp4 → NAS ✓ 245K
rsync soundcore AeroClip (input)_2026-05-12_08-12-10.mp4 → NAS ✓ 58K
rsync soundcore AeroClip (input)_2026-05-12_08-12-42.mp4 → NAS ✓ 117K
rsync soundcore AeroClip (input)_2026-05-12_08-13-12.mp4 → NAS ✓ 67K
rsync soundcore AeroClip (input)_2026-05-12_08-13-42.mp4 → NAS ✓ 64K
rsync soundcore AeroClip (input)_2026-05-12_08-14-12.mp4 → NAS ✓ 92K
rsync soundcore AeroClip (input)_2026-05-12_08-14-42.mp4 → NAS ✓ 60K
rsync soundcore AeroClip (input)_2026-05-12_08-15-12.mp4 → NAS ✓ 64K
rsync soundcore AeroClip (input)_2026-05-12_08-15-42.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_08-16-12.mp4 → NAS ✓ 17K
rsync soundcore AeroClip (input)_2026-05-12_08-16-42.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_08-17-12.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_08-17-42.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-18-12.mp4 → NAS ✓ 7.0K
rsync soundcore AeroClip (input)_2026-05-12_08-19-13.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_08-19-45.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_08-20-15.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_08-20-45.mp4 → NAS ✓ 14K
rsync soundcore AeroClip (input)_2026-05-12_08-21-15.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_08-21-45.mp4 → NAS ✓ 18K
rsync soundcore AeroClip (input)_2026-05-12_08-22-15.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-22-45.mp4 → NAS ✓ 17K
rsync soundcore AeroClip (input)_2026-05-12_08-23-15.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_08-23-45.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-24-15.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_08-24-45.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_08-25-15.mp4 → NAS ✓ 28K
rsync soundcore AeroClip (input)_2026-05-12_08-25-45.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_08-26-28.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_08-27-00.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_08-27-30.mp4 → NAS ✓ 38K
rsync soundcore AeroClip (input)_2026-05-12_08-28-00.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_08-28-30.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_08-29-00.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_08-29-30.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_08-30-00.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_08-30-30.mp4 → NAS ✓ 29K
rsync soundcore AeroClip (input)_2026-05-12_08-31-00.mp4 → NAS ✓ 60K
rsync soundcore AeroClip (input)_2026-05-12_08-31-30.mp4 → NAS ✓ 124K
rsync soundcore AeroClip (input)_2026-05-12_08-32-00.mp4 → NAS ✓ 73K
rsync soundcore AeroClip (input)_2026-05-12_08-32-30.mp4 → NAS ✓ 39K
rsync soundcore AeroClip (input)_2026-05-12_08-32-59.mp4 → NAS ✓ 52K
rsync soundcore AeroClip (input)_2026-05-12_08-33-29.mp4 → NAS ✓ 127K
rsync soundcore AeroClip (input)_2026-05-12_08-33-59.mp4 → NAS ✓ 139K
rsync soundcore AeroClip (input)_2026-05-12_08-34-29.mp4 → NAS ✓ 169K
rsync soundcore AeroClip (input)_2026-05-12_08-34-59.mp4 → NAS ✓ 85K
rsync soundcore AeroClip (input)_2026-05-12_08-35-29.mp4 → NAS ✓ 30K
rsync soundcore AeroClip (input)_2026-05-12_08-35-59.mp4 → NAS ✓ 34K
rsync soundcore AeroClip (input)_2026-05-12_08-36-29.mp4 → NAS ✓ 47K
rsync soundcore AeroClip (input)_2026-05-12_08-37-10.mp4 → NAS ✓ 10K
rsync soundcore AeroClip (input)_2026-05-12_08-37-42.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_08-38-12.mp4 → NAS ✓ 123K
rsync soundcore AeroClip (input)_2026-05-12_08-38-42.mp4 → NAS ✓ 164K
rsync soundcore AeroClip (input)_2026-05-12_08-39-12.mp4 → NAS ✓ 179K
rsync soundcore AeroClip (input)_2026-05-12_08-39-42.mp4 → NAS ✓ 176K
rsync soundcore AeroClip (input)_2026-05-12_08-40-12.mp4 → NAS ✓ 173K
rsync soundcore AeroClip (input)_2026-05-12_08-40-42.mp4 → NAS ✓ 157K
rsync soundcore AeroClip (input)_2026-05-12_08-41-12.mp4 → NAS ✓ 101K
rsync soundcore AeroClip (input)_2026-05-12_08-41-42.mp4 → NAS ✓ 119K
rsync soundcore AeroClip (input)_2026-05-12_08-42-12.mp4 → NAS ✓ 79K
rsync soundcore AeroClip (input)_2026-05-12_08-42-42.mp4 → NAS ✓ 14K
rsync soundcore AeroClip (input)_2026-05-12_08-43-12.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_08-43-42.mp4 → NAS ✓ 25K
rsync soundcore AeroClip (input)_2026-05-12_08-44-12.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-44-42.mp4 → NAS ✓ 105K
rsync soundcore AeroClip (input)_2026-05-12_08-45-12.mp4 → NAS ✓ 160K
rsync soundcore AeroClip (input)_2026-05-12_08-45-41.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_08-46-11.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_08-46-41.mp4 → NAS ✓ 12K
rsync soundcore AeroClip (input)_2026-05-12_08-47-11.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-47-41.mp4 → NAS ✓ 47K
rsync soundcore AeroClip (input)_2026-05-12_08-48-11.mp4 → NAS ✓ 83K
rsync soundcore AeroClip (input)_2026-05-12_08-48-41.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_08-49-11.mp4 → NAS ✓ 40K
rsync soundcore AeroClip (input)_2026-05-12_08-49-41.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_08-50-11.mp4 → NAS ✓ 17K
rsync soundcore AeroClip (input)_2026-05-12_08-50-41.mp4 → NAS ✓ 125K
rsync soundcore AeroClip (input)_2026-05-12_08-51-11.mp4 → NAS ✓ 69K
rsync soundcore AeroClip (input)_2026-05-12_08-51-41.mp4 → NAS ✓ 67K
rsync soundcore AeroClip (input)_2026-05-12_08-52-11.mp4 → NAS ✓ 57K
rsync soundcore AeroClip (input)_2026-05-12_08-52-41.mp4 → NAS ✓ 38K
rsync soundcore AeroClip (input)_2026-05-12_08-53-11.mp4 → NAS ✓ 29K
rsync soundcore AeroClip (input)_2026-05-12_08-53-41.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_08-54-11.mp4 → NAS ✓ 29K
rsync soundcore AeroClip (input)_2026-05-12_08-54-41.mp4 → NAS ✓ 14K
rsync soundcore AeroClip (input)_2026-05-12_08-55-11.mp4 → NAS ✓ 39K
rsync soundcore AeroClip (input)_2026-05-12_08-55-41.mp4 → NAS ✓ 25K
rsync soundcore AeroClip (input)_2026-05-12_08-56-11.mp4 → NAS ✓ 31K
rsync soundcore AeroClip (input)_2026-05-12_08-56-41.mp4 → NAS ✓ 24K
rsync soundcore AeroClip (input)_2026-05-12_08-57-11.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_08-57-41.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_08-58-11.mp4 → NAS ✓ 18K
rsync soundcore AeroClip (input)_2026-05-12_08-58-41.mp4 → NAS ✓ 35K
rsync soundcore AeroClip (input)_2026-05-12_08-59-11.mp4 → NAS ✓ 35K
rsync soundcore AeroClip (input)_2026-05-12_08-59-41.mp4 → NAS ✓ 19K
rsync soundcore AeroClip (input)_2026-05-12_09-00-11.mp4 → NAS ✓ 19K
rsync soundcore AeroClip (input)_2026-05-12_09-00-41.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_09-01-11.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_09-01-41.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_09-02-11.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-03-07.mp4 → NAS ✓ 32K
rsync soundcore AeroClip (input)_2026-05-12_09-03-39.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-04-09.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_09-04-39.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-05-12.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_09-05-44.mp4 → NAS ✓ 28K
rsync soundcore AeroClip (input)_2026-05-12_09-06-14.mp4 → NAS ✓ 60K
rsync soundcore AeroClip (input)_2026-05-12_09-06-44.mp4 → NAS ✓ 43K
rsync soundcore AeroClip (input)_2026-05-12_09-07-14.mp4 → NAS ✓ 42K
rsync soundcore AeroClip (input)_2026-05-12_09-07-44.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_09-08-14.mp4 → NAS ✓ 26K
rsync soundcore AeroClip (input)_2026-05-12_09-08-44.mp4 → NAS ✓ 36K
rsync soundcore AeroClip (input)_2026-05-12_09-09-14.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-09-44.mp4 → NAS ✓ 7.0K
rsync soundcore AeroClip (input)_2026-05-12_09-10-14.mp4 → NAS ✓ 10K
rsync soundcore AeroClip (input)_2026-05-12_09-10-44.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_09-11-14.mp4 → NAS ✓ 7.0K
rsync soundcore AeroClip (input)_2026-05-12_09-11-44.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-12-14.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_09-12-43.mp4 → NAS ✓ 35K
rsync soundcore AeroClip (input)_2026-05-12_09-13-13.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_09-13-43.mp4 → NAS ✓ 40K
rsync soundcore AeroClip (input)_2026-05-12_09-14-13.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_09-14-43.mp4 → NAS ✓ 24K
rsync soundcore AeroClip (input)_2026-05-12_09-15-13.mp4 → NAS ✓ 29K
rsync soundcore AeroClip (input)_2026-05-12_09-15-43.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_09-16-13.mp4 → NAS ✓ 26K
rsync soundcore AeroClip (input)_2026-05-12_09-16-43.mp4 → NAS ✓ 24K
rsync soundcore AeroClip (input)_2026-05-12_09-17-13.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_09-17-43.mp4 → NAS ✓ 33K
rsync soundcore AeroClip (input)_2026-05-12_09-18-13.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_09-18-43.mp4 → NAS ✓ 30K
rsync soundcore AeroClip (input)_2026-05-12_09-19-12.mp4 → NAS ✓ 12K
rsync soundcore AeroClip (input)_2026-05-12_09-19-42.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_09-20-18.mp4 → NAS ✓ 12K
rsync soundcore AeroClip (input)_2026-05-12_09-20-50.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-21-20.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-21-59.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-22-31.mp4 → NAS ✓ 12K
rsync soundcore AeroClip (input)_2026-05-12_09-23-01.mp4 → NAS ✓ 28K
rsync soundcore AeroClip (input)_2026-05-12_09-24-02.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_09-24-34.mp4 → NAS ✓ 30K
rsync soundcore AeroClip (input)_2026-05-12_09-25-04.mp4 → NAS ✓ 53K
rsync soundcore AeroClip (input)_2026-05-12_09-25-34.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_09-26-04.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-26-34.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_09-27-04.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_09-27-34.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_09-28-04.mp4 → NAS ✓ 19K
rsync soundcore AeroClip (input)_2026-05-12_09-28-34.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_09-29-04.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_09-29-34.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_09-30-04.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_09-30-34.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_09-31-04.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_09-31-33.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-32-03.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-32-33.mp4 → NAS ✓ 55K
rsync soundcore AeroClip (input)_2026-05-12_09-33-03.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_09-33-33.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_09-34-03.mp4 → NAS ✓ 17K
rsync soundcore AeroClip (input)_2026-05-12_09-34-33.mp4 → NAS ✓ 63K
rsync soundcore AeroClip (input)_2026-05-12_09-35-03.mp4 → NAS ✓ 57K
rsync soundcore AeroClip (input)_2026-05-12_09-35-33.mp4 → NAS ✓ 64K
rsync soundcore AeroClip (input)_2026-05-12_09-36-03.mp4 → NAS ✓ 70K
rsync soundcore AeroClip (input)_2026-05-12_09-36-33.mp4 → NAS ✓ 56K
rsync soundcore AeroClip (input)_2026-05-12_09-37-03.mp4 → NAS ✓ 86K
rsync soundcore AeroClip (input)_2026-05-12_09-37-33.mp4 → NAS ✓ 66K
rsync soundcore AeroClip (input)_2026-05-12_09-38-03.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_09-38-33.mp4 → NAS ✓ 19K
rsync soundcore AeroClip (input)_2026-05-12_09-39-28.mp4 → NAS ✓ 34K
rsync soundcore AeroClip (input)_2026-05-12_09-40-00.mp4 → NAS ✓ 53K
rsync soundcore AeroClip (input)_2026-05-12_09-40-30.mp4 → NAS ✓ 50K
rsync MacBook Pro Microphone (input)_2026-05-12_09-41-30.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-42-02.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-42-32.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-43-02.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_09-43-32.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_09-44-02.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_09-44-32.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_09-45-02.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-45-32.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-12_09-46-02.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-46-32.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-47-01.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-47-31.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-48-01.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-48-31.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-49-01.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_09-49-31.mp4 → NAS ✓ 197K
rsync MacBook Pro Microphone (input)_2026-05-12_09-50-01.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_09-50-31.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_09-51-01.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_09-51-31.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-52-01.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-52-31.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-53-00.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-53-30.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-54-00.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-54-30.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-55-00.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-55-30.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-01-32.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-12_10-02-01.mp4 → NAS ✓ 221K
rsync MacBook Pro Microphone (input)_2026-05-12_10-02-30.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-12_10-03-00.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-12_10-03-29.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-03-59.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-04-29.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-04-59.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-05-29.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-05-59.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-06-29.mp4 → NAS ✓ 197K
rsync MacBook Pro Microphone (input)_2026-05-12_10-06-59.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_10-07-29.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_10-07-59.mp4 → NAS ✓ 198K
rsync MacBook Pro Microphone (input)_2026-05-12_10-08-28.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_10-08-58.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-09-28.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_10-09-58.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-10-28.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_10-10-58.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-11-28.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-11-58.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-12-28.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-12-58.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-13-28.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-13-58.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-14-28.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-14-58.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-15-28.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-15-57.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-16-27.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-16-57.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-17-27.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-17-57.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-18-27.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-18-57.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-19-27.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-19-57.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-28-53.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-29-24.mp4 → NAS ✓ 215K
rsync MacBook Pro Microphone (input)_2026-05-12_10-29-53.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-12_10-30-23.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-30-53.mp4 → NAS ✓ 218K
rsync MacBook Pro Microphone (input)_2026-05-12_10-31-23.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-31-53.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-32-23.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-32-53.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-33-23.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-33-53.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-34-22.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_10-34-52.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_10-35-22.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_10-35-52.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-36-22.mp4 → NAS ✓ 226K
rsync MacBook Pro Microphone (input)_2026-05-12_10-36-52.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-37-22.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-37-52.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-38-22.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-38-52.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-39-22.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-39-51.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-12_10-40-21.mp4 → NAS ✓ 218K
rsync MacBook Pro Microphone (input)_2026-05-12_10-40-51.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-12_10-41-21.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-41-51.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-42-21.mp4 → NAS ✓ 219K
rsync MacBook Pro Microphone (input)_2026-05-12_10-42-51.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-43-21.mp4 → NAS ✓ 223K
rsync MacBook Pro Microphone (input)_2026-05-12_10-43-50.mp4 → NAS ✓ 233K
rsync MacBook Pro Microphone (input)_2026-05-12_10-44-20.mp4 → NAS ✓ 222K
rsync MacBook Pro Microphone (input)_2026-05-12_10-44-50.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-45-20.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-45-50.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-12_10-46-20.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-12_10-46-50.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-47-19.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-12_10-47-49.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-48-19.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-48-49.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-49-19.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-49-49.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-50-19.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-50-49.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-51-19.mp4 → NAS ✓ 198K
...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38761
|
1439
|
53
|
2026-05-14T06:28:22.798590+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740102798_m2.jpg...
|
Finder
|
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rireroy.• 0Screenpipe - ArchiveAll docs • AFFiNE) rireroy.• 0Screenpipe - ArchiveAll docs • AFFiNE) DXP4800PLUS-B5F8©Screenpipe - Archive(* SQLite Web: archive.db( SQLite Web: db.salite• Claude% Manage extra usage for paicG 2 TB in 25 MB/s - Gooale Se- New TabB +•• Goocle GeminiGeminiGShow thinkingThat is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even thesecondarv ssu-onlv beelink Nas It vou ena uo oulloino iu will keeo vour local ssu lean whilekeepina vour database searchableAs for setting up languages for transcription, yes, you can configure it, but it helps tounderstand how ScreenPipe handles language natively first.How the Transcription Engine Handles Languageby derault, screenripe uses a multilingual whisper model and sets the language contigurationTO AuTO-DerectWhen a new audio chunk comes in, the model listens to the first few seconds of audio, quessesthe language, and transcribes the rest of that chunk using that assumption.• The Advantage: If vou are watchina a tutorial in Enalish. and then an hour later vou are in aZoom call speakina Bulaarian. ScreenPipe will automatically switch gears without vouhaving to touch the settinas.• The Drawback: Auto-detect can sometimes guess wrong, especially it there is heavybackground noise, it someone starts a sentence with a foreign loanword, or it you arerapidly code-switching between Slovak and English in the same conversation. When itguesses wrong, it might try to torce Slovak words into English spelling, resulting inaloberish.How to Force a Soecific LanquadeIf vou want to ensure maximum accuracy and vou know vou will primarily be recordina in onelanquage for a specific period, vou can explicitly set the lanquage. This also sliahtly speeds upthe processina because the model skips the detection phase.If vou are usina the Deskton Aoo UI:1. Open the ScreenPipe settinasAck CeminiScreenpipe (archive.db • 2071.1MBActivitvSearchWork Reportmonitor 1 v09 : 4510 : 30Apply FilterAPP TIMELINE • CLICK TO PLAY • DRAG SCROLLBAR TO PANClear12 Mav 10:28 • Firefox / Data Exolorer — Wor!Quicktime Plaver File Edit ViewPetko Kashinski© Scor(andnPro VGemini is Aland can make mictakes includina about neonle Your nrivacv and GeminSummarize pagewи 20c20c hTime Range Filter V<>0 Il Support Daily - in 4h 32 mCR0G:© Bulld= PH New UI Login G Get Starting with J Apps J Chice Onboarding"Usen +Work40 + 18 Peae0 Auto-Plav Audio• ONDally - Platorm• In 1/mInu 14 May S-Zo.L412 / 05 / 2026 17...
|
NULL
|
-6017334002911876737
|
NULL
|
app_switch
|
ocr
|
NULL
|
rireroy.• 0Screenpipe - ArchiveAll docs • AFFiNE) rireroy.• 0Screenpipe - ArchiveAll docs • AFFiNE) DXP4800PLUS-B5F8©Screenpipe - Archive(* SQLite Web: archive.db( SQLite Web: db.salite• Claude% Manage extra usage for paicG 2 TB in 25 MB/s - Gooale Se- New TabB +•• Goocle GeminiGeminiGShow thinkingThat is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even thesecondarv ssu-onlv beelink Nas It vou ena uo oulloino iu will keeo vour local ssu lean whilekeepina vour database searchableAs for setting up languages for transcription, yes, you can configure it, but it helps tounderstand how ScreenPipe handles language natively first.How the Transcription Engine Handles Languageby derault, screenripe uses a multilingual whisper model and sets the language contigurationTO AuTO-DerectWhen a new audio chunk comes in, the model listens to the first few seconds of audio, quessesthe language, and transcribes the rest of that chunk using that assumption.• The Advantage: If vou are watchina a tutorial in Enalish. and then an hour later vou are in aZoom call speakina Bulaarian. ScreenPipe will automatically switch gears without vouhaving to touch the settinas.• The Drawback: Auto-detect can sometimes guess wrong, especially it there is heavybackground noise, it someone starts a sentence with a foreign loanword, or it you arerapidly code-switching between Slovak and English in the same conversation. When itguesses wrong, it might try to torce Slovak words into English spelling, resulting inaloberish.How to Force a Soecific LanquadeIf vou want to ensure maximum accuracy and vou know vou will primarily be recordina in onelanquage for a specific period, vou can explicitly set the lanquage. This also sliahtly speeds upthe processina because the model skips the detection phase.If vou are usina the Deskton Aoo UI:1. Open the ScreenPipe settinasAck CeminiScreenpipe (archive.db • 2071.1MBActivitvSearchWork Reportmonitor 1 v09 : 4510 : 30Apply FilterAPP TIMELINE • CLICK TO PLAY • DRAG SCROLLBAR TO PANClear12 Mav 10:28 • Firefox / Data Exolorer — Wor!Quicktime Plaver File Edit ViewPetko Kashinski© Scor(andnPro VGemini is Aland can make mictakes includina about neonle Your nrivacv and GeminSummarize pagewи 20c20c hTime Range Filter V<>0 Il Support Daily - in 4h 32 mCR0G:© Bulld= PH New UI Login G Get Starting with J Apps J Chice Onboarding"Usen +Work40 + 18 Peae0 Auto-Plav Audio• ONDally - Platorm• In 1/mInu 14 May S-Zo.L412 / 05 / 2026 17...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38760
|
1437
|
42
|
2026-05-14T06:28:22.814424+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740102814_m1.jpg...
|
Finder
|
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp‹→0 lbl • | Daily - Platform • in 17 mAec2-user@ip-10-30-129-190:~-zshscreenpipe"885ec2-user@ip-10-30-129-...100% C8• Thu 14 May 9:28:22181DOCKERO ₴81DEV (-zsh)O ₴2APP (-zsh)83rsync MacBook Pro Microphone(input)_2026-05-12_18-26-56.mp4→ NAS / 207Krsync MacBook Pro Microphone(input)_2026-05-12_18-28-26.mp4→ NAS /216Krsync MacBook Pro Microphone (input)_2026-05-12_18-28-56.mp4 +NAS207Krsync MacBook Pro Microphone (input)_2026-05-12_18-29-56.mp4→ NAS / 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-30-56.mp4→ NAS / 198Krsync MacBookPro Microphone (input)_2026-05-12_18-31-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-32-26.mp4→ NAS / 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-32-56.mp4 → NAS ‹ 201Krsync MacBook Pro Microphone (input)_2026-05-12_18-33-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-34-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-35-26.mp4→ NAS ‹ 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-35-56.mp4→ NAS + 200Krsync MacBook Pro Microphone (input)_2026-05-12_18-36-26.mp4 → NAS ‹ 206Krsync MacBook Pro Microphone (input)_2026-05-12_18-36-56.mp4→ NAS / 205Krsync MacBook Pro Microphone (input)_2026-05-12_18-37-26.mp4 → NAS + 201Krsvnc MocRook Pro Micronhone (innut)2026-05-12 18-37-56.mn4 → NAS / 199Kec2-user@ip-10-20-31-14... 2731NWindsurf7 InoroynePMCUwOR TEePILCIUPIVECLenpurp-cocuLuampyCLUIsrsync MacBook Pro Microphone (input)_2026-05-12_18-45-26.mp4 → NAS ‹ 207Kaudio files total:1113 file(s), 145M[+09m26s]Copying screenpipe logs for 2026-05-12rsync logs → NAS• 1 file(s),288K[2026-05-1321:46:00][2026-05-1321:46:00J[2026-05-1321:46:00][2026-05-1321:46:00]Lukas@Lukas'-Kovaliks[2026-05-1409:28:19][2026-05-1409:28:19][2026-05-1409:28:19]Archive DBsize:Total time:2.0G9m26sSync complete for2026-05-12MacBook-Pro-Jiminny~ S~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-13Screenpipe sync startingfor: 2026-05-13[+00m00s]PreflightchecksSource DB:OK(5.6G)[2026-05-14 09:28:19]ERROR: NAS not mountedat/Volumes/screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny...
|
NULL
|
-6403218425403153294
|
NULL
|
app_switch
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp‹→0 lbl • | Daily - Platform • in 17 mAec2-user@ip-10-30-129-190:~-zshscreenpipe"885ec2-user@ip-10-30-129-...100% C8• Thu 14 May 9:28:22181DOCKERO ₴81DEV (-zsh)O ₴2APP (-zsh)83rsync MacBook Pro Microphone(input)_2026-05-12_18-26-56.mp4→ NAS / 207Krsync MacBook Pro Microphone(input)_2026-05-12_18-28-26.mp4→ NAS /216Krsync MacBook Pro Microphone (input)_2026-05-12_18-28-56.mp4 +NAS207Krsync MacBook Pro Microphone (input)_2026-05-12_18-29-56.mp4→ NAS / 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-30-56.mp4→ NAS / 198Krsync MacBookPro Microphone (input)_2026-05-12_18-31-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-32-26.mp4→ NAS / 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-32-56.mp4 → NAS ‹ 201Krsync MacBook Pro Microphone (input)_2026-05-12_18-33-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-34-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-35-26.mp4→ NAS ‹ 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-35-56.mp4→ NAS + 200Krsync MacBook Pro Microphone (input)_2026-05-12_18-36-26.mp4 → NAS ‹ 206Krsync MacBook Pro Microphone (input)_2026-05-12_18-36-56.mp4→ NAS / 205Krsync MacBook Pro Microphone (input)_2026-05-12_18-37-26.mp4 → NAS + 201Krsvnc MocRook Pro Micronhone (innut)2026-05-12 18-37-56.mn4 → NAS / 199Kec2-user@ip-10-20-31-14... 2731NWindsurf7 InoroynePMCUwOR TEePILCIUPIVECLenpurp-cocuLuampyCLUIsrsync MacBook Pro Microphone (input)_2026-05-12_18-45-26.mp4 → NAS ‹ 207Kaudio files total:1113 file(s), 145M[+09m26s]Copying screenpipe logs for 2026-05-12rsync logs → NAS• 1 file(s),288K[2026-05-1321:46:00][2026-05-1321:46:00J[2026-05-1321:46:00][2026-05-1321:46:00]Lukas@Lukas'-Kovaliks[2026-05-1409:28:19][2026-05-1409:28:19][2026-05-1409:28:19]Archive DBsize:Total time:2.0G9m26sSync complete for2026-05-12MacBook-Pro-Jiminny~ S~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-13Screenpipe sync startingfor: 2026-05-13[+00m00s]PreflightchecksSource DB:OK(5.6G)[2026-05-14 09:28:19]ERROR: NAS not mountedat/Volumes/screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38762
|
1437
|
43
|
2026-05-14T06:28:23.933329+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740103933_m1.jpg...
|
Finder
|
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FinderFileEditViewGoWindowHelp< >0 lhl • | D FinderFileEditViewGoWindowHelp< >0 lhl • | Daily - Platform • in 17 mec2-user@ip-10-30-129-190:~-zshscreenpipe"885100% C8•Thu 14 May 9:28:23181DOCKERO 881DEV (-zsh)O ₴2APP (-zsh)883rsync MacBook Pro Microphone(input)_2026-05-12_18-26-56.mp4 → NAS ‹ 207Krsync MacBook Pro Microphone(input)_2026-05-12_18-28-26.mp4→ NAS + 216Krsync MacBook Pro Microphone (input)_2026-05-12_18-28-56.mp4 NAS ‹ 207Krsync MacBook Pro Microphone (input)_2026-05-12_18-29-56.mp4 → NAS 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-30-56.mp4 → NAS ‹ 198Krsync MacBookPro Microphone (input)_2026-05-12_18-31-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-32-26.mp4 → NAS 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-32-56.mp4 → NAS ‹ 201Krsync MacBook Pro Microphone (input)_2026-05-12_18-33-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-34-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-35-26.mp4* NAS + 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-35-56.mp4 → NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_.18-36-26.mp4 → NAS + 206Krsync MacBook Pro Microphone (input)_2026-05-12_18-36-56.mp4 → NAS ‹ 205Krsync MacBook Pro Microphone (input)_2026-05-12__18-37-26.mp4 NAS ‹ 201Krsync MacBook Pro Microphone (input)_2026-05-12_18-37-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-38-26.mp4 • NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-38-56.mp4 → NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_18-39-26.mp4 → NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_18-39-56.mp4 → NAS ‹ 195Krsync MacBook Pro Microphone (input)_2026-05-12_18-40-26.mp4 → NAS ‹ 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-40-56.mp4 → NAS ‹ 202Krsync MacBook Pro Microphone (input)_2026-05-12_18-41-26.mp4 → NAS + 203Krsync MacBook Pro Microphone (input)_2026-05-12_18-42-26.mp4 → NAS ‹ 209Krsync MacBook Pro Microphone (input)_2026-05-12_18-43-26.mp4 → NAS + 207Krsync MacBook Pro Microphone (input)_2026-05-12_18-44-26.mp4 → NAS ‹ 210Krsync MacBook Pro Microphone (input)_2026-05-12_18-45-26.mp4 → NAS ‹ 207Kaudio files total:1113 file(s), 145M[+09m26s] • Copying screenpipe logs for 2026-05-12rsync logs → NAS• 1 file(s), 288K[2026-05-1321:46:00][2026-05-1321:46:00J[2026-05-1321:46:00]Archive DB size:Total time:2.0G9m26sSync complete for 2026-05-12[2026-05-1321:46:00]Lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-13[2026-05-1409:28:19][2026-05-1409:28:19JScreenpipe sync starting for: 2026-05-13[2026-05-1409:28:19][+00m00s]• PreflightchecksSource DB:OK[2026-05-14 09:28:19](5.6G)ERROR: NAS not mounted at /Volumes/screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ec2-user@ip-10-30-129-...ec2-user@ip-10-20-31-14... *7...
|
NULL
|
6281962678388477407
|
NULL
|
visual_change
|
ocr
|
NULL
|
FinderFileEditViewGoWindowHelp< >0 lhl • | D FinderFileEditViewGoWindowHelp< >0 lhl • | Daily - Platform • in 17 mec2-user@ip-10-30-129-190:~-zshscreenpipe"885100% C8•Thu 14 May 9:28:23181DOCKERO 881DEV (-zsh)O ₴2APP (-zsh)883rsync MacBook Pro Microphone(input)_2026-05-12_18-26-56.mp4 → NAS ‹ 207Krsync MacBook Pro Microphone(input)_2026-05-12_18-28-26.mp4→ NAS + 216Krsync MacBook Pro Microphone (input)_2026-05-12_18-28-56.mp4 NAS ‹ 207Krsync MacBook Pro Microphone (input)_2026-05-12_18-29-56.mp4 → NAS 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-30-56.mp4 → NAS ‹ 198Krsync MacBookPro Microphone (input)_2026-05-12_18-31-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-32-26.mp4 → NAS 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-32-56.mp4 → NAS ‹ 201Krsync MacBook Pro Microphone (input)_2026-05-12_18-33-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-34-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-35-26.mp4* NAS + 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-35-56.mp4 → NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_.18-36-26.mp4 → NAS + 206Krsync MacBook Pro Microphone (input)_2026-05-12_18-36-56.mp4 → NAS ‹ 205Krsync MacBook Pro Microphone (input)_2026-05-12__18-37-26.mp4 NAS ‹ 201Krsync MacBook Pro Microphone (input)_2026-05-12_18-37-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-38-26.mp4 • NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-38-56.mp4 → NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_18-39-26.mp4 → NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_18-39-56.mp4 → NAS ‹ 195Krsync MacBook Pro Microphone (input)_2026-05-12_18-40-26.mp4 → NAS ‹ 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-40-56.mp4 → NAS ‹ 202Krsync MacBook Pro Microphone (input)_2026-05-12_18-41-26.mp4 → NAS + 203Krsync MacBook Pro Microphone (input)_2026-05-12_18-42-26.mp4 → NAS ‹ 209Krsync MacBook Pro Microphone (input)_2026-05-12_18-43-26.mp4 → NAS + 207Krsync MacBook Pro Microphone (input)_2026-05-12_18-44-26.mp4 → NAS ‹ 210Krsync MacBook Pro Microphone (input)_2026-05-12_18-45-26.mp4 → NAS ‹ 207Kaudio files total:1113 file(s), 145M[+09m26s] • Copying screenpipe logs for 2026-05-12rsync logs → NAS• 1 file(s), 288K[2026-05-1321:46:00][2026-05-1321:46:00J[2026-05-1321:46:00]Archive DB size:Total time:2.0G9m26sSync complete for 2026-05-12[2026-05-1321:46:00]Lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-13[2026-05-1409:28:19][2026-05-1409:28:19JScreenpipe sync starting for: 2026-05-13[2026-05-1409:28:19][+00m00s]• PreflightchecksSource DB:OK[2026-05-14 09:28:19](5.6G)ERROR: NAS not mounted at /Volumes/screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ec2-user@ip-10-30-129-...ec2-user@ip-10-20-31-14... *7...
|
38760
|
NULL
|
NULL
|
NULL
|
|
38764
|
1439
|
54
|
2026-05-14T06:28:24.605323+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740104605_m2.jpg...
|
Finder
|
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
•• cFavourites• jiminny() AirDrop• RecentsA Applic •• cFavourites• jiminny() AirDrop• RecentsA Applications9 Documen• iCloud Drive992 Svnc tolde• DXP4800PLUS-B5F|• Orange• Red• Yellov• Greer• Blue• Purple• All Tags.Mideooon fro micropnione (miput-c020-00-14-1-o0-2op4e System Audio (output2026-05-1217-30-28.mp4•1 MacBook Pro Micronhone (inout) 2026-05-12 17-29-58.mn4D System Audio (output)_2026-05-12_17-29-58.mp40 MacBook Pro Microphone (input) 2026-05-12 17-29-28.mp401 Svstem Audio (outout) 2026-05-12 17-29-28.mo4• MacBook Pro Microphone (input) 2026-05-12_17-28-58.mp4• System Audio (output)_2026-05-12_17-28-58.mp4• MacBook Pro Microphone (input)_ 2026-05-12_17-28-28.mp4|• System Audio (output)_2026-05-12_17-28-28.mp4(input)_2026-05-12_17-27-58.mp4• System Audio (output) 2026-05-12 17-27-58.mp401 MacBook Pro Micronhone (inout) 2026-05-12 17-27-28 mo4D System Audio (output)_2026-05-12_17-27-28.mp4• MacBook Pro Microphone (input)_2026-05-12_17-26-58.mp4• System Audio (outout) 2026-05-1217-26-58.mp4• MacBook Pro Microphone (input)_ 2026-05-12_17-26-28.mp4System Audio (output)_2026-esystem Audio (output 2026-05-121/-20-58.mp4• MacBook Pro Microphone (input)_2026-05-12_17-25-58.mp4D System Audio (output)_2026-05-12_17-25-28.mp4• MacBook Pro Microphone (input) 2026-05-12_17-25-28.mp40 Svstem Audio (outout) 2026-05-12 17-24-58.mo4• MacBook Pro Microphone (input) 2026-05-12_17-24-58.mp4MacBook Pro Microphone (input)_2026-05-12_17-24-28.mp4esystem Audio (output 2026-05-1217-24-28.mp4@ MacRook Dro Micronhone (innut) 2026-05-12 17-22-58 mn4• Svstem Audio (outout) 2026-05-12 17-23-58 mp4• масьоок Pro Micropnone (input 2020-05-12 1/-23-28.mp401 Svstem Audio (outout 2026-05-2 17-23-28.mo4|@ MacBook Pro Microphone (input) 2026-05-12_17-22-58.mp4D System Audio (output)_2026-05-12_17-22-58.mp4• MacBook Pro Microphone (input) _ 2026-05-12_17-22-28.mp4@1 Suctem Audio (outnut) 2026-05-12 17-22-28 mn/D System Audio (output) _2026-05-12_17-21-56.mp4• MacBook Pro Microphone (input) 2026-05-12 17-21-56.mp401 Lakvlak bose ac25 l| (inout) 2026-05-12 14-22-38.mo4• LakyLak bose qc35 Il (input)_2026-05-12_14-21-38.mp4LakyLak bose qc35 II (input)_2026-05-12_14-15-09.mp4l Lakylak bose accs inout2026-05-12 14-10-40.mo4|al lakvlak hace ac25 ll finnut) 2026-05-12 11-09-11 mл/• MacBook Prine (inout) 2026-05-12 13-35-39.mр4• MacBook Pro Microphone (input) 2026-05-12_13-00-11.mp4@1 MacBook Pro Micronhone (inout) 2026-05-12 12-59-41.mo4D MacBook Pro Microphone (input)_ 2026-05-12_12-59-11.mp4• MacBook Pro Microphone (input) _2026-05-12_12-22-51.mр401 MacBook Pro Microphone (inout) 2026-05-12 12-22-21.mo4@ MacBook Pro Microphone (input) 2026-05-12 12-21-51.mp4• MacBook Pro Microphone• MacBook Pro Microphone (input) 2026-05-12 12-20-51.mp4@ MacRook Pro Micronhone (innut) 2026-05-12 12-20-21 mn/• MacBook Pro Microphone (input)_2026-05-12_12-19-52.mp4• MacBook Pro Microphone (input) 2026-05-12_ 12-19-22.mр401 MacBook Pro Micronhone (inout) 2026-05-12 12-18-52 mo4a Morponl Dra Micranhono hool 0006 06 70 42.19.29 мл/.v Q SearchDate Modified12 May 2026 at 20:3012 Mav 2026 at 20:3012 May 2026 at 20:3012 May 2026 at 20:2912 Mav 2026 at 20:2912 May 2026 at 20:2912 May 2026 at 20:2912 May 2026 at 20:2812 Mav 2026 at 20:2912 May 2026 at 20:2812 May 2026 at 20:2812 Mav 2026 at 20:2712 May 2026 at 20:2712 May 2026 at 20:2712 May 2026 at 20:2712 Mav 2026 at 20:26|12 May 2026 at 20:2612 Mav 2026 at 20:2612 May 2026 at 20:2512 May 2026 at 20:2512 May 2026 at 20:2512 May 2026 at 20:2512 May 2026 at 20:2412 Mav 2026 at 20:24|12 May 2026 at 20:2412 May 2026 at 20:2312 May 2026 at 20:2312 May 2026 at 20.2212 Mav 2026 at 20:2212 May 2026 at 20:2212 May 2026 at 20:2212 Mav 2026 at 17:2312 May 2026 at 17:2212 Mav 2026 at 17:11112 Mav 2026 at 17:0912 Mav 2026 at 16:3612 May 2026 at 16:0012 Mav 2026 at 16:00.12 May 2026 at 15:5912 Mav 2026 at 15:2212 Mav 2026 at 15:2912 May 2026 at 15:2112 Mav 2026 at 15:2012 May 2026 at 15:2012 Mav 2026 at 15:1910 MA 2006 C 46.1012 May 2026 at 15:184 990 items. 13.63 GB avZUUNe5 KBMPEG-4 movie207 KB MPEG-4 movie5 KBMPEG-4 movie205 KBMPEG-4 movie5 K:MPEG-4 movie213 KB MPEG-4 movie5 KE207 KEMPEG-4 movie5KRMDEG-A movie198 KB5 KBMPEG-4 movie209 KB.MPEG-4 movie5 KB MPEG-4 movie210 KBMPEG-4 movie5 K:206 kp MDSG.A movid5 KBbKbMPEG-4 movie211 KPMPEG-A movie5 KB MPEG-4 movie200 KB5 K:MPEG-4 movie203 KBMDEC.A movid206 KB200 KRMPEG-4 movieMDEG-A movie5 KB MPEG-4 movie204 KBMPEG-4 movie200 KBMDEC.A movid5 KB199 KE5 KRMPEG-4 movieMDEG-A movie5 KBMPEG-4 movie199 KB211 KEMPEG-4 movie226 KB203 KB212 KMPEG-4 movieMPEG-4 movie.221 KР213 KB199 KB208 KEMDSG-A movieMPEG-4 movieMPEG-4 movieMPEG-A movie207 KB247 KB216 K:MoeehmariMPEG-4 movie215 KR219 KB216 KEMDEG.A movioMPEG-4 movieMPEG-4 movie218 KPMPFG-A movie232 KB MPEG-4 movie217 KB210 KEMPEG-4 movien10 vo218 к8MDEAA MAvin40 ll 0 I Daily - Platform • in 17 m100% 52• Thu 14 May 9:28:24Lukas Kovalik's MacBook Pro (Jiminny)88 =mSQ Search^ Date Modified4 Aug 2024 at 13:31Favourites• jiminny(®) AirDrop• RecentsA Applications|9 Documents• Downloadsii lukasiCloud• iCloud Drive992 Svnc toldeLocations• DXP4800PLUS-B5F|49 Network• CRM• Orange• Red• Yellow• Purple• All Tags..>• Macintosh HD> € Network216 29 Cp Ctartun Volumo...
|
NULL
|
7608329223946791644
|
NULL
|
click
|
ocr
|
NULL
|
•• cFavourites• jiminny() AirDrop• RecentsA Applic •• cFavourites• jiminny() AirDrop• RecentsA Applications9 Documen• iCloud Drive992 Svnc tolde• DXP4800PLUS-B5F|• Orange• Red• Yellov• Greer• Blue• Purple• All Tags.Mideooon fro micropnione (miput-c020-00-14-1-o0-2op4e System Audio (output2026-05-1217-30-28.mp4•1 MacBook Pro Micronhone (inout) 2026-05-12 17-29-58.mn4D System Audio (output)_2026-05-12_17-29-58.mp40 MacBook Pro Microphone (input) 2026-05-12 17-29-28.mp401 Svstem Audio (outout) 2026-05-12 17-29-28.mo4• MacBook Pro Microphone (input) 2026-05-12_17-28-58.mp4• System Audio (output)_2026-05-12_17-28-58.mp4• MacBook Pro Microphone (input)_ 2026-05-12_17-28-28.mp4|• System Audio (output)_2026-05-12_17-28-28.mp4(input)_2026-05-12_17-27-58.mp4• System Audio (output) 2026-05-12 17-27-58.mp401 MacBook Pro Micronhone (inout) 2026-05-12 17-27-28 mo4D System Audio (output)_2026-05-12_17-27-28.mp4• MacBook Pro Microphone (input)_2026-05-12_17-26-58.mp4• System Audio (outout) 2026-05-1217-26-58.mp4• MacBook Pro Microphone (input)_ 2026-05-12_17-26-28.mp4System Audio (output)_2026-esystem Audio (output 2026-05-121/-20-58.mp4• MacBook Pro Microphone (input)_2026-05-12_17-25-58.mp4D System Audio (output)_2026-05-12_17-25-28.mp4• MacBook Pro Microphone (input) 2026-05-12_17-25-28.mp40 Svstem Audio (outout) 2026-05-12 17-24-58.mo4• MacBook Pro Microphone (input) 2026-05-12_17-24-58.mp4MacBook Pro Microphone (input)_2026-05-12_17-24-28.mp4esystem Audio (output 2026-05-1217-24-28.mp4@ MacRook Dro Micronhone (innut) 2026-05-12 17-22-58 mn4• Svstem Audio (outout) 2026-05-12 17-23-58 mp4• масьоок Pro Micropnone (input 2020-05-12 1/-23-28.mp401 Svstem Audio (outout 2026-05-2 17-23-28.mo4|@ MacBook Pro Microphone (input) 2026-05-12_17-22-58.mp4D System Audio (output)_2026-05-12_17-22-58.mp4• MacBook Pro Microphone (input) _ 2026-05-12_17-22-28.mp4@1 Suctem Audio (outnut) 2026-05-12 17-22-28 mn/D System Audio (output) _2026-05-12_17-21-56.mp4• MacBook Pro Microphone (input) 2026-05-12 17-21-56.mp401 Lakvlak bose ac25 l| (inout) 2026-05-12 14-22-38.mo4• LakyLak bose qc35 Il (input)_2026-05-12_14-21-38.mp4LakyLak bose qc35 II (input)_2026-05-12_14-15-09.mp4l Lakylak bose accs inout2026-05-12 14-10-40.mo4|al lakvlak hace ac25 ll finnut) 2026-05-12 11-09-11 mл/• MacBook Prine (inout) 2026-05-12 13-35-39.mр4• MacBook Pro Microphone (input) 2026-05-12_13-00-11.mp4@1 MacBook Pro Micronhone (inout) 2026-05-12 12-59-41.mo4D MacBook Pro Microphone (input)_ 2026-05-12_12-59-11.mp4• MacBook Pro Microphone (input) _2026-05-12_12-22-51.mр401 MacBook Pro Microphone (inout) 2026-05-12 12-22-21.mo4@ MacBook Pro Microphone (input) 2026-05-12 12-21-51.mp4• MacBook Pro Microphone• MacBook Pro Microphone (input) 2026-05-12 12-20-51.mp4@ MacRook Pro Micronhone (innut) 2026-05-12 12-20-21 mn/• MacBook Pro Microphone (input)_2026-05-12_12-19-52.mp4• MacBook Pro Microphone (input) 2026-05-12_ 12-19-22.mр401 MacBook Pro Micronhone (inout) 2026-05-12 12-18-52 mo4a Morponl Dra Micranhono hool 0006 06 70 42.19.29 мл/.v Q SearchDate Modified12 May 2026 at 20:3012 Mav 2026 at 20:3012 May 2026 at 20:3012 May 2026 at 20:2912 Mav 2026 at 20:2912 May 2026 at 20:2912 May 2026 at 20:2912 May 2026 at 20:2812 Mav 2026 at 20:2912 May 2026 at 20:2812 May 2026 at 20:2812 Mav 2026 at 20:2712 May 2026 at 20:2712 May 2026 at 20:2712 May 2026 at 20:2712 Mav 2026 at 20:26|12 May 2026 at 20:2612 Mav 2026 at 20:2612 May 2026 at 20:2512 May 2026 at 20:2512 May 2026 at 20:2512 May 2026 at 20:2512 May 2026 at 20:2412 Mav 2026 at 20:24|12 May 2026 at 20:2412 May 2026 at 20:2312 May 2026 at 20:2312 May 2026 at 20.2212 Mav 2026 at 20:2212 May 2026 at 20:2212 May 2026 at 20:2212 Mav 2026 at 17:2312 May 2026 at 17:2212 Mav 2026 at 17:11112 Mav 2026 at 17:0912 Mav 2026 at 16:3612 May 2026 at 16:0012 Mav 2026 at 16:00.12 May 2026 at 15:5912 Mav 2026 at 15:2212 Mav 2026 at 15:2912 May 2026 at 15:2112 Mav 2026 at 15:2012 May 2026 at 15:2012 Mav 2026 at 15:1910 MA 2006 C 46.1012 May 2026 at 15:184 990 items. 13.63 GB avZUUNe5 KBMPEG-4 movie207 KB MPEG-4 movie5 KBMPEG-4 movie205 KBMPEG-4 movie5 K:MPEG-4 movie213 KB MPEG-4 movie5 KE207 KEMPEG-4 movie5KRMDEG-A movie198 KB5 KBMPEG-4 movie209 KB.MPEG-4 movie5 KB MPEG-4 movie210 KBMPEG-4 movie5 K:206 kp MDSG.A movid5 KBbKbMPEG-4 movie211 KPMPEG-A movie5 KB MPEG-4 movie200 KB5 K:MPEG-4 movie203 KBMDEC.A movid206 KB200 KRMPEG-4 movieMDEG-A movie5 KB MPEG-4 movie204 KBMPEG-4 movie200 KBMDEC.A movid5 KB199 KE5 KRMPEG-4 movieMDEG-A movie5 KBMPEG-4 movie199 KB211 KEMPEG-4 movie226 KB203 KB212 KMPEG-4 movieMPEG-4 movie.221 KР213 KB199 KB208 KEMDSG-A movieMPEG-4 movieMPEG-4 movieMPEG-A movie207 KB247 KB216 K:MoeehmariMPEG-4 movie215 KR219 KB216 KEMDEG.A movioMPEG-4 movieMPEG-4 movie218 KPMPFG-A movie232 KB MPEG-4 movie217 KB210 KEMPEG-4 movien10 vo218 к8MDEAA MAvin40 ll 0 I Daily - Platform • in 17 m100% 52• Thu 14 May 9:28:24Lukas Kovalik's MacBook Pro (Jiminny)88 =mSQ Search^ Date Modified4 Aug 2024 at 13:31Favourites• jiminny(®) AirDrop• RecentsA Applications|9 Documents• Downloadsii lukasiCloud• iCloud Drive992 Svnc toldeLocations• DXP4800PLUS-B5F|49 Network• CRM• Orange• Red• Yellow• Purple• All Tags..>• Macintosh HD> € Network216 29 Cp Ctartun Volumo...
|
38761
|
NULL
|
NULL
|
NULL
|
|
38763
|
1437
|
44
|
2026-05-14T06:28:24.617531+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740104617_m1.jpg...
|
Finder
|
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FinderFileEditViewGoWindowHelp< >0 lhl • | D FinderFileEditViewGoWindowHelp< >0 lhl • | Daily - Platform • in 17 mec2-user@ip-10-30-129-190:~-zshscreenpipe"885100% C8•Thu 14 May 9:28:24181DOCKERO 881DEV (-zsh)O ₴2APP (-zsh)883rsync MacBook Pro Microphone(input)_2026-05-12_18-26-56.mp4 → NAS ‹ 207Krsync MacBook Pro Microphone(input)_2026-05-12_18-28-26.mp4→ NAS + 216Krsync MacBook Pro Microphone (input)_2026-05-12_18-28-56.mp4 NAS ‹ 207Krsync MacBook Pro Microphone (input)_2026-05-12_18-29-56.mp4 → NAS 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-30-56.mp4 → NAS ‹ 198Krsync MacBookPro Microphone (input)_2026-05-12_18-31-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-32-26.mp4 → NAS 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-32-56.mp4 → NAS ‹ 201Krsync MacBook Pro Microphone (input)_2026-05-12_18-33-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-34-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-35-26.mp4* NAS + 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-35-56.mp4 → NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_.18-36-26.mp4 → NAS + 206Krsync MacBook Pro Microphone (input)_2026-05-12_18-36-56.mp4 → NAS ‹ 205Krsync MacBook Pro Microphone (input)_2026-05-12__18-37-26.mp4 NAS ‹ 201Krsync MacBook Pro Microphone (input)_2026-05-12_18-37-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-38-26.mp4 • NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-38-56.mp4 → NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_18-39-26.mp4 → NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_18-39-56.mp4 → NAS ‹ 195Krsync MacBook Pro Microphone (input)_2026-05-12_18-40-26.mp4 → NAS ‹ 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-40-56.mp4 → NAS ‹ 202Krsync MacBook Pro Microphone (input)_2026-05-12_18-41-26.mp4 → NAS + 203Krsync MacBook Pro Microphone (input)_2026-05-12_18-42-26.mp4 → NAS ‹ 209Krsync MacBook Pro Microphone (input)_2026-05-12_18-43-26.mp4 → NAS + 207Krsync MacBook Pro Microphone (input)_2026-05-12_18-44-26.mp4 → NAS ‹ 210Krsync MacBook Pro Microphone (input)_2026-05-12_18-45-26.mp4 → NAS ‹ 207Kaudio files total:1113 file(s), 145M[+09m26s] • Copying screenpipe logs for 2026-05-12rsync logs → NAS• 1 file(s), 288K[2026-05-1321:46:00][2026-05-1321:46:00J[2026-05-1321:46:00]Archive DB size:Total time:2.0G9m26sSync complete for 2026-05-12[2026-05-1321:46:00]Lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-13[2026-05-1409:28:19][2026-05-1409:28:19JScreenpipe sync starting for: 2026-05-13[2026-05-1409:28:19][+00m00s]• PreflightchecksSource DB:OK[2026-05-14 09:28:19](5.6G)ERROR: NAS not mounted at /Volumes/screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ec2-user@ip-10-30-129-...ec2-user@ip-10-20-31-14... *7...
|
NULL
|
4339858654438975802
|
NULL
|
click
|
ocr
|
NULL
|
FinderFileEditViewGoWindowHelp< >0 lhl • | D FinderFileEditViewGoWindowHelp< >0 lhl • | Daily - Platform • in 17 mec2-user@ip-10-30-129-190:~-zshscreenpipe"885100% C8•Thu 14 May 9:28:24181DOCKERO 881DEV (-zsh)O ₴2APP (-zsh)883rsync MacBook Pro Microphone(input)_2026-05-12_18-26-56.mp4 → NAS ‹ 207Krsync MacBook Pro Microphone(input)_2026-05-12_18-28-26.mp4→ NAS + 216Krsync MacBook Pro Microphone (input)_2026-05-12_18-28-56.mp4 NAS ‹ 207Krsync MacBook Pro Microphone (input)_2026-05-12_18-29-56.mp4 → NAS 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-30-56.mp4 → NAS ‹ 198Krsync MacBookPro Microphone (input)_2026-05-12_18-31-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-32-26.mp4 → NAS 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-32-56.mp4 → NAS ‹ 201Krsync MacBook Pro Microphone (input)_2026-05-12_18-33-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-34-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-35-26.mp4* NAS + 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-35-56.mp4 → NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_.18-36-26.mp4 → NAS + 206Krsync MacBook Pro Microphone (input)_2026-05-12_18-36-56.mp4 → NAS ‹ 205Krsync MacBook Pro Microphone (input)_2026-05-12__18-37-26.mp4 NAS ‹ 201Krsync MacBook Pro Microphone (input)_2026-05-12_18-37-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-38-26.mp4 • NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-38-56.mp4 → NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_18-39-26.mp4 → NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_18-39-56.mp4 → NAS ‹ 195Krsync MacBook Pro Microphone (input)_2026-05-12_18-40-26.mp4 → NAS ‹ 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-40-56.mp4 → NAS ‹ 202Krsync MacBook Pro Microphone (input)_2026-05-12_18-41-26.mp4 → NAS + 203Krsync MacBook Pro Microphone (input)_2026-05-12_18-42-26.mp4 → NAS ‹ 209Krsync MacBook Pro Microphone (input)_2026-05-12_18-43-26.mp4 → NAS + 207Krsync MacBook Pro Microphone (input)_2026-05-12_18-44-26.mp4 → NAS ‹ 210Krsync MacBook Pro Microphone (input)_2026-05-12_18-45-26.mp4 → NAS ‹ 207Kaudio files total:1113 file(s), 145M[+09m26s] • Copying screenpipe logs for 2026-05-12rsync logs → NAS• 1 file(s), 288K[2026-05-1321:46:00][2026-05-1321:46:00J[2026-05-1321:46:00]Archive DB size:Total time:2.0G9m26sSync complete for 2026-05-12[2026-05-1321:46:00]Lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-13[2026-05-1409:28:19][2026-05-1409:28:19JScreenpipe sync starting for: 2026-05-13[2026-05-1409:28:19][+00m00s]• PreflightchecksSource DB:OK[2026-05-14 09:28:19](5.6G)ERROR: NAS not mounted at /Volumes/screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ec2-user@ip-10-30-129-...ec2-user@ip-10-20-31-14... *7...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38765
|
1439
|
55
|
2026-05-14T06:28:25.923964+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740105923_m2.jpg...
|
Finder
|
DXP4800PLUS-B5F
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
DXP4800PLUS-B5F
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
Name
Date Modified
Size
Kind
Connecting…
Connect As…
0 items
DXP4800PLUS-B5F...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Favourites","depth":6,"bounds":{"left":0.5046542,"top":0.061452515,"width":0.06216755,"height":0.015163607},"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"jiminny","depth":6,"bounds":{"left":0.51263297,"top":0.08140463,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AirDrop","depth":6,"bounds":{"left":0.51263297,"top":0.103751,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Recents","depth":6,"bounds":{"left":0.51263297,"top":0.12609737,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Applications","depth":6,"bounds":{"left":0.51263297,"top":0.14844373,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Documents","depth":6,"bounds":{"left":0.51263297,"top":0.1707901,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Downloads","depth":6,"bounds":{"left":0.51263297,"top":0.19313647,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":6,"bounds":{"left":0.51263297,"top":0.21548285,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"iCloud","depth":6,"bounds":{"left":0.5046542,"top":0.2434158,"width":0.06216755,"height":0.015163607},"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"iCloud Drive","depth":6,"bounds":{"left":0.51263297,"top":0.26336792,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sync folder","depth":6,"bounds":{"left":0.51263297,"top":0.2857143,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Locations","depth":6,"bounds":{"left":0.5046542,"top":0.31364724,"width":0.06216755,"height":0.015163607},"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"DXP4800PLUS-B5F","depth":6,"bounds":{"left":0.51263297,"top":0.33359936,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Network","depth":6,"bounds":{"left":0.51263297,"top":0.35594574,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tags","depth":6,"bounds":{"left":0.5046542,"top":0.38387868,"width":0.06216755,"height":0.015163607},"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"CRM","depth":6,"bounds":{"left":0.51263297,"top":0.4038308,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Orange","depth":6,"bounds":{"left":0.51263297,"top":0.42617717,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Red","depth":6,"bounds":{"left":0.51263297,"top":0.44852355,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yellow","depth":6,"bounds":{"left":0.51263297,"top":0.4708699,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Green","depth":6,"bounds":{"left":0.51263297,"top":0.49321628,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Blue","depth":6,"bounds":{"left":0.51263297,"top":0.51556265,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Purple","depth":6,"bounds":{"left":0.51263297,"top":0.53790903,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"All Tags…","depth":6,"bounds":{"left":0.51263297,"top":0.5602554,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Name","depth":7,"bounds":{"left":0.5827792,"top":0.08858739,"width":0.011968086,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Date Modified","depth":7,"bounds":{"left":0.8656915,"top":0.08858739,"width":0.025930852,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Size","depth":7,"bounds":{"left":0.92586434,"top":0.08858739,"width":0.008976064,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Kind","depth":7,"bounds":{"left":0.9581117,"top":0.08858739,"width":0.00930851,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Name","depth":6,"bounds":{"left":0.5711436,"top":0.083798885,"width":0.29288563,"height":0.022346368},"on_screen":true,"role_description":"sort button","subrole":"AXSortButton","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"Date Modified","depth":6,"bounds":{"left":0.8640292,"top":0.083798885,"width":0.06017287,"height":0.022346368},"on_screen":true,"role_description":"sort button","subrole":"AXSortButton","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"Size","depth":6,"bounds":{"left":0.92420214,"top":0.083798885,"width":0.032247342,"height":0.022346368},"on_screen":true,"role_description":"sort button","subrole":"AXSortButton","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"Kind","depth":6,"bounds":{"left":0.95644945,"top":0.083798885,"width":0.040226065,"height":0.022346368},"on_screen":true,"role_description":"sort button","subrole":"AXSortButton","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"Connecting…","depth":2,"bounds":{"left":0.57081115,"top":0.06624102,"width":0.02825798,"height":0.011971269},"on_screen":true,"automation_id":"_NS:10","role_description":"text"},{"role":"AXButton","text":"Connect As…","depth":2,"bounds":{"left":0.9684175,"top":0.065442935,"width":0.027925532,"height":0.015163607},"on_screen":true,"automation_id":"_NS:38","role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"0 items","depth":2,"bounds":{"left":0.77360374,"top":0.98324025,"width":0.016954787,"height":0.011173184},"on_screen":true,"automation_id":"_NS:34","role_description":"text"},{"role":"AXStaticText","text":"DXP4800PLUS-B5F","depth":1,"bounds":{"left":0.5990692,"top":0.019952115,"width":0.14378324,"height":0.0415004},"on_screen":true,"role_description":"text"}]...
|
-5489754960907684982
|
-1839682751017496682
|
visual_change
|
accessibility
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
DXP4800PLUS-B5F
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
Name
Date Modified
Size
Kind
Connecting…
Connect As…
0 items
DXP4800PLUS-B5F...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38767
|
1439
|
56
|
2026-05-14T06:28:28.069539+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740108069_m2.jpg...
|
Finder
|
DXP4800PLUS-B5F
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
DXP4800PLUS-B5F
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
Youtube
--
--
Sharepoint
Work
--
--
Sharepoint
Test
--
--
Sharepoint
screenpipe
--
--
Sharepoint
personal_folder
--
--
Sharepoint
Music
--
--
Sharepoint
Movies
--
--
Sharepoint
Media
--
--
Sharepoint
Marti
--
--
Sharepoint
Google
--
--
Sharepoint
games
--
--
Sharepoint
Family tree documents
--
--
Sharepoint
EFI
--
--
Sharepoint
ebooks
--
--
Sharepoint
Documents
--
--
Sharepoint
docker
--
--
Sharepoint
BT
--
--
Sharepoint
bookdrop
--
--
Sharepoint
Backup
--
--
Sharepoint
Audiobooks
--
--
Sharepoint
Apps
--
--
Sharepoint
Name
Date Modified
Size
Kind
Connected as: Adm1n
Disconnect
1 of 21 selected
DXP4800PLUS-B5F...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Favourites","depth":6,"bounds":{"left":0.5046542,"top":0.061452515,"width":0.06216755,"height":0.015163607},"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"jiminny","depth":6,"bounds":{"left":0.51263297,"top":0.08140463,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AirDrop","depth":6,"bounds":{"left":0.51263297,"top":0.103751,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Recents","depth":6,"bounds":{"left":0.51263297,"top":0.12609737,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Applications","depth":6,"bounds":{"left":0.51263297,"top":0.14844373,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Documents","depth":6,"bounds":{"left":0.51263297,"top":0.1707901,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Downloads","depth":6,"bounds":{"left":0.51263297,"top":0.19313647,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":6,"bounds":{"left":0.51263297,"top":0.21548285,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"iCloud","depth":6,"bounds":{"left":0.5046542,"top":0.2434158,"width":0.06216755,"height":0.015163607},"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"iCloud Drive","depth":6,"bounds":{"left":0.51263297,"top":0.26336792,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sync folder","depth":6,"bounds":{"left":0.51263297,"top":0.2857143,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Locations","depth":6,"bounds":{"left":0.5046542,"top":0.31364724,"width":0.06216755,"height":0.015163607},"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"DXP4800PLUS-B5F","depth":6,"bounds":{"left":0.51263297,"top":0.33359936,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Network","depth":6,"bounds":{"left":0.51263297,"top":0.35594574,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tags","depth":6,"bounds":{"left":0.5046542,"top":0.38387868,"width":0.06216755,"height":0.015163607},"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"CRM","depth":6,"bounds":{"left":0.51263297,"top":0.4038308,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Orange","depth":6,"bounds":{"left":0.51263297,"top":0.42617717,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Red","depth":6,"bounds":{"left":0.51263297,"top":0.44852355,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yellow","depth":6,"bounds":{"left":0.51263297,"top":0.4708699,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Green","depth":6,"bounds":{"left":0.51263297,"top":0.49321628,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Blue","depth":6,"bounds":{"left":0.51263297,"top":0.51556265,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Purple","depth":6,"bounds":{"left":0.51263297,"top":0.53790903,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"All Tags…","depth":6,"bounds":{"left":0.51263297,"top":0.5602554,"width":0.049534574,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Name","depth":7,"bounds":{"left":0.5827792,"top":0.08858739,"width":0.011968086,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Date Modified","depth":7,"bounds":{"left":0.8656915,"top":0.08858739,"width":0.025930852,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Size","depth":7,"bounds":{"left":0.92586434,"top":0.08858739,"width":0.008976064,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Kind","depth":7,"bounds":{"left":0.9581117,"top":0.08858739,"width":0.00930851,"height":0.011173184},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Youtube","depth":7,"bounds":{"left":0.5827792,"top":0.11173184,"width":0.019281914,"height":0.012769354},"on_screen":true,"value":"Youtube","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.11173184,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.11173184,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.11173184,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Work","depth":7,"bounds":{"left":0.5827792,"top":0.12769353,"width":0.013297873,"height":0.012769354},"on_screen":true,"value":"Work","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.12769353,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.12769353,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.12769353,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Test","depth":7,"bounds":{"left":0.5827792,"top":0.14365523,"width":0.011303191,"height":0.012769354},"on_screen":true,"value":"Test","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.14365523,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.14365523,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.14365523,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"screenpipe","depth":7,"bounds":{"left":0.5827792,"top":0.15961692,"width":0.025265958,"height":0.012769354},"on_screen":true,"value":"screenpipe","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.15961692,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.15961692,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.15961692,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"personal_folder","depth":7,"bounds":{"left":0.5827792,"top":0.17557861,"width":0.034242023,"height":0.012769354},"on_screen":true,"value":"personal_folder","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.17557861,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.17557861,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.17557861,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Music","depth":7,"bounds":{"left":0.5827792,"top":0.1915403,"width":0.01462766,"height":0.012769354},"on_screen":true,"value":"Music","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.1915403,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.1915403,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.1915403,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Movies","depth":7,"bounds":{"left":0.5827792,"top":0.207502,"width":0.016954787,"height":0.012769354},"on_screen":true,"value":"Movies","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.207502,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.207502,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.207502,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Media","depth":7,"bounds":{"left":0.5827792,"top":0.22346368,"width":0.014960106,"height":0.012769354},"on_screen":true,"value":"Media","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.22346368,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.22346368,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.22346368,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Marti","depth":7,"bounds":{"left":0.5827792,"top":0.23942538,"width":0.013297873,"height":0.012769354},"on_screen":true,"value":"Marti","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.23942538,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.23942538,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.23942538,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Google","depth":7,"bounds":{"left":0.5827792,"top":0.25538707,"width":0.017287234,"height":0.012769354},"on_screen":true,"value":"Google","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.25538707,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.25538707,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.25538707,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"games","depth":7,"bounds":{"left":0.5827792,"top":0.27134877,"width":0.016289894,"height":0.012769354},"on_screen":true,"value":"games","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.27134877,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.27134877,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.27134877,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Family tree documents","depth":7,"bounds":{"left":0.5827792,"top":0.28731045,"width":0.048537236,"height":0.012769354},"on_screen":true,"value":"Family tree documents","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.28731045,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.28731045,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.28731045,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"EFI","depth":7,"bounds":{"left":0.5827792,"top":0.30327216,"width":0.008976064,"height":0.012769354},"on_screen":true,"value":"EFI","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.30327216,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.30327216,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.30327216,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"ebooks","depth":7,"bounds":{"left":0.5827792,"top":0.31923383,"width":0.017287234,"height":0.012769354},"on_screen":true,"value":"ebooks","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.31923383,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.31923383,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.31923383,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Documents","depth":7,"bounds":{"left":0.5827792,"top":0.33519554,"width":0.025930852,"height":0.012769354},"on_screen":true,"value":"Documents","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.33519554,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.33519554,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.33519554,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"docker","depth":7,"bounds":{"left":0.5827792,"top":0.35115722,"width":0.01662234,"height":0.012769354},"on_screen":true,"value":"docker","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.35115722,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.35115722,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.35115722,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"BT","depth":7,"bounds":{"left":0.5827792,"top":0.36711892,"width":0.00831117,"height":0.012769354},"on_screen":true,"value":"BT","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.36711892,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.36711892,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.36711892,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"bookdrop","depth":7,"bounds":{"left":0.5827792,"top":0.3830806,"width":0.021941489,"height":0.012769354},"on_screen":true,"value":"bookdrop","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.3830806,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.3830806,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.3830806,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Backup","depth":7,"bounds":{"left":0.5827792,"top":0.3990423,"width":0.017952127,"height":0.012769354},"on_screen":true,"value":"Backup","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.3990423,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.3990423,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.3990423,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Audiobooks","depth":7,"bounds":{"left":0.5827792,"top":0.415004,"width":0.026595745,"height":0.012769354},"on_screen":true,"value":"Audiobooks","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.415004,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.415004,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.415004,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Apps","depth":7,"bounds":{"left":0.5827792,"top":0.4309657,"width":0.013297873,"height":0.012769354},"on_screen":true,"value":"Apps","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8656915,"top":0.4309657,"width":0.056848403,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.9494681,"top":0.4309657,"width":0.0056515955,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"bounds":{"left":0.9581117,"top":0.4309657,"width":0.023271276,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Name","depth":6,"bounds":{"left":0.5711436,"top":0.083798885,"width":0.29288563,"height":0.022346368},"on_screen":true,"role_description":"sort button","subrole":"AXSortButton","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"Date Modified","depth":6,"bounds":{"left":0.8640292,"top":0.083798885,"width":0.06017287,"height":0.022346368},"on_screen":true,"role_description":"sort button","subrole":"AXSortButton","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"Size","depth":6,"bounds":{"left":0.92420214,"top":0.083798885,"width":0.032247342,"height":0.022346368},"on_screen":true,"role_description":"sort button","subrole":"AXSortButton","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"Kind","depth":6,"bounds":{"left":0.95644945,"top":0.083798885,"width":0.040226065,"height":0.022346368},"on_screen":true,"role_description":"sort button","subrole":"AXSortButton","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"Connected as: Adm1n","depth":2,"bounds":{"left":0.57081115,"top":0.06624102,"width":0.04488032,"height":0.011971269},"on_screen":true,"automation_id":"_NS:10","role_description":"text"},{"role":"AXButton","text":"Disconnect","depth":2,"bounds":{"left":0.97174203,"top":0.065442935,"width":0.024601065,"height":0.015163607},"on_screen":true,"automation_id":"_NS:38","role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"1 of 21 selected","depth":2,"bounds":{"left":0.7659575,"top":0.98324025,"width":0.032579787,"height":0.011173184},"on_screen":true,"automation_id":"_NS:34","role_description":"text"},{"role":"AXStaticText","text":"DXP4800PLUS-B5F","depth":1,"bounds":{"left":0.5990692,"top":0.019952115,"width":0.14378324,"height":0.0415004},"on_screen":true,"role_description":"text"}]...
|
-3746020344752311573
|
-7730237853755851065
|
click
|
accessibility
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
DXP4800PLUS-B5F
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
Youtube
--
--
Sharepoint
Work
--
--
Sharepoint
Test
--
--
Sharepoint
screenpipe
--
--
Sharepoint
personal_folder
--
--
Sharepoint
Music
--
--
Sharepoint
Movies
--
--
Sharepoint
Media
--
--
Sharepoint
Marti
--
--
Sharepoint
Google
--
--
Sharepoint
games
--
--
Sharepoint
Family tree documents
--
--
Sharepoint
EFI
--
--
Sharepoint
ebooks
--
--
Sharepoint
Documents
--
--
Sharepoint
docker
--
--
Sharepoint
BT
--
--
Sharepoint
bookdrop
--
--
Sharepoint
Backup
--
--
Sharepoint
Audiobooks
--
--
Sharepoint
Apps
--
--
Sharepoint
Name
Date Modified
Size
Kind
Connected as: Adm1n
Disconnect
1 of 21 selected
DXP4800PLUS-B5F...
|
38765
|
NULL
|
NULL
|
NULL
|
|
38766
|
1437
|
45
|
2026-05-14T06:28:28.084980+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740108084_m1.jpg...
|
Finder
|
DXP4800PLUS-B5F
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
DXP4800PLUS-B5F
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
Youtube
--
--
Sharepoint
Work
--
--
Sharepoint
Test
--
--
Sharepoint
screenpipe
--
--
Sharepoint
personal_folder
--
--
Sharepoint
Music
--
--
Sharepoint
Movies
--
--
Sharepoint
Media
--
--
Sharepoint
Marti
--
--
Sharepoint
Google
--
--
Sharepoint
games
--
--
Sharepoint
Family tree documents
--
--
Sharepoint
EFI
--
--
Sharepoint
ebooks
--
--
Sharepoint
Documents
--
--
Sharepoint
docker
--
--
Sharepoint
BT
--
--
Sharepoint
bookdrop
--
--
Sharepoint
Backup
--
--
Sharepoint
Audiobooks
--
--
Sharepoint
Apps
--
--
Sharepoint
Name
Date Modified
Size
Kind
Connected as: Adm1n
Disconnect
1 of 21 selected
DXP4800PLUS-B5F...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Favourites","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"jiminny","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"AirDrop","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Recents","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Applications","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Documents","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Downloads","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"iCloud","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"iCloud Drive","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sync folder","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Locations","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"DXP4800PLUS-B5F","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Network","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tags","depth":6,"on_screen":true,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"CRM","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Orange","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Red","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yellow","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Green","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Blue","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Purple","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"All Tags…","depth":6,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Name","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Date Modified","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Size","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Kind","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Youtube","depth":7,"on_screen":true,"value":"Youtube","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Work","depth":7,"on_screen":true,"value":"Work","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Test","depth":7,"on_screen":true,"value":"Test","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"screenpipe","depth":7,"on_screen":true,"value":"screenpipe","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"personal_folder","depth":7,"on_screen":true,"value":"personal_folder","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Music","depth":7,"on_screen":true,"value":"Music","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Movies","depth":7,"on_screen":true,"value":"Movies","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Media","depth":7,"on_screen":true,"value":"Media","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Marti","depth":7,"on_screen":true,"value":"Marti","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Google","depth":7,"on_screen":true,"value":"Google","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"games","depth":7,"on_screen":true,"value":"games","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Family tree documents","depth":7,"on_screen":true,"value":"Family tree documents","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"EFI","depth":7,"on_screen":true,"value":"EFI","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"ebooks","depth":7,"on_screen":true,"value":"ebooks","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Documents","depth":7,"on_screen":true,"value":"Documents","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"docker","depth":7,"on_screen":true,"value":"docker","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"BT","depth":7,"on_screen":true,"value":"BT","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"bookdrop","depth":7,"on_screen":true,"value":"bookdrop","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Backup","depth":7,"on_screen":true,"value":"Backup","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Audiobooks","depth":7,"on_screen":true,"value":"Audiobooks","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Apps","depth":7,"on_screen":true,"value":"Apps","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Sharepoint","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Name","depth":6,"on_screen":true,"role_description":"sort button","subrole":"AXSortButton","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"Date Modified","depth":6,"on_screen":true,"role_description":"sort button","subrole":"AXSortButton","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"Size","depth":6,"on_screen":true,"role_description":"sort button","subrole":"AXSortButton","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"Kind","depth":6,"on_screen":true,"role_description":"sort button","subrole":"AXSortButton","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"Connected as: Adm1n","depth":2,"on_screen":true,"automation_id":"_NS:10","role_description":"text"},{"role":"AXButton","text":"Disconnect","depth":2,"on_screen":true,"automation_id":"_NS:38","role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"1 of 21 selected","depth":2,"bounds":{"left":1.0,"top":0.0,"width":-0.035416722,"height":0.015555556},"on_screen":true,"automation_id":"_NS:34","role_description":"text"},{"role":"AXStaticText","text":"DXP4800PLUS-B5F","depth":1,"on_screen":true,"role_description":"text"}]...
|
-3746020344752311573
|
-7730237853755851065
|
click
|
accessibility
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
DXP4800PLUS-B5F
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
Youtube
--
--
Sharepoint
Work
--
--
Sharepoint
Test
--
--
Sharepoint
screenpipe
--
--
Sharepoint
personal_folder
--
--
Sharepoint
Music
--
--
Sharepoint
Movies
--
--
Sharepoint
Media
--
--
Sharepoint
Marti
--
--
Sharepoint
Google
--
--
Sharepoint
games
--
--
Sharepoint
Family tree documents
--
--
Sharepoint
EFI
--
--
Sharepoint
ebooks
--
--
Sharepoint
Documents
--
--
Sharepoint
docker
--
--
Sharepoint
BT
--
--
Sharepoint
bookdrop
--
--
Sharepoint
Backup
--
--
Sharepoint
Audiobooks
--
--
Sharepoint
Apps
--
--
Sharepoint
Name
Date Modified
Size
Kind
Connected as: Adm1n
Disconnect
1 of 21 selected
DXP4800PLUS-B5F...
|
38763
|
NULL
|
NULL
|
NULL
|
|
38768
|
1437
|
46
|
2026-05-14T06:28:29.790072+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740109790_m1.jpg...
|
iTerm2
|
ec2-user@ip-10-30-129-190:~
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FinderFileEditViewGoWindowHelplallDaily - Platform FinderFileEditViewGoWindowHelplallDaily - Platform • in 17 m100% [ec2-user@ip-10-30-129-190:~-zshDOCKERO 81DEV (-zsh)О 82APP (-zsh)rsync MacBook Pro Microphone(input)_2026-05-12_18-26-56.mp4 → NAS ‹ 207Krsync MacBook Pro Microphone(input)_2026-05-12_18-28-26.mp4 → NAS ‹ 216Krsync MacBook Pro Microphone (input)_2026-05-12_18-28-56.mp4 NAS ‹ 207Krsync MacBook Pro Microphone (input)_2026-05-12_18-29-56.mp4 → NAS 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-30-56.mp4 → NAS ‹ 198Krsync MacBookPro Microphone (input)_2026-05-12_18-31-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-32-26.mp4 → NAS 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-32-56.mp4 → NAS ‹ 201Krsync MacBook Pro Microphone (input)_2026-05-12_18-33-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-34-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-35-26.mp4 → NAS ‹ 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-35-56.mp4 → NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_18-36-26.mp4 NAS ‹ 206Krsync MacBook Pro Microphone (input)_2026-05-12_18-36-56.mp4 → NAS ‹ 205Krsync MacBook Pro Microphone (input)_2026-05-12_18-37-26.mp4 → NAS + 201Krsync MacBook Pro Microphone (input)_2026-05-12_18-37-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-38-26.mp4 • NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-38-56.mp4 → NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_18-39-26.mp4 → NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_18-39-56.mp4 → NAS ‹ 195Krsync MacBook Pro Microphone (input)_2026-05-12_18-40-26.mp4 → NAS ‹ 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-40-56.mp4 → NAS ‹ 202Krsync MacBook Pro Microphone (input)_2026-05-12_18-41-26.mp4 → NAS + 203Krsync MacBook Pro Microphone (input)_2026-05-12_18-42-26.mp4 → NAS ‹ 209Krsync MacBook Pro Microphone (input)_2026-05-12_18-43-26.mp4 → NAS + 207Krsync MacBook Pro Microphone (input)_2026-05-12_18-44-26.mp4 → NAS ‹ 210Krsync MacBook Pro Microphone (input)_2026-05-12_18-45-26.mp4 → NAS ‹ 207Kaudio files total:1113 file(s), 145M[+09m26s] • Copying screenpipe logs for 2026-05-12rsync logs → NAS• 1 file(s), 288K[2026-05-1321:46:00][2026-05-1321:46:00J[2026-05-1321:46:00]Archive DB size:Total time:2.0G9m26sSync complete for 2026-05-12[2026-05-1321:46:00]Lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-13[2026-05-1409:28:19][2026-05-1409:28:19JScreenpipe sync starting for: 2026-05-13[2026-05-1409:28:19][+00m00s]• PreflightchecksSource DB:OK[2026-05-14 09:28:19](5.6G)ERROR: NAS not mounted at /Volumes/screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~screenpipe"[EMAIL] 14 May 9:28:29181ec2-user@ip-10-20-31-14...₴7...
|
NULL
|
-2882346324646293630
|
NULL
|
click
|
ocr
|
NULL
|
FinderFileEditViewGoWindowHelplallDaily - Platform FinderFileEditViewGoWindowHelplallDaily - Platform • in 17 m100% [ec2-user@ip-10-30-129-190:~-zshDOCKERO 81DEV (-zsh)О 82APP (-zsh)rsync MacBook Pro Microphone(input)_2026-05-12_18-26-56.mp4 → NAS ‹ 207Krsync MacBook Pro Microphone(input)_2026-05-12_18-28-26.mp4 → NAS ‹ 216Krsync MacBook Pro Microphone (input)_2026-05-12_18-28-56.mp4 NAS ‹ 207Krsync MacBook Pro Microphone (input)_2026-05-12_18-29-56.mp4 → NAS 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-30-56.mp4 → NAS ‹ 198Krsync MacBookPro Microphone (input)_2026-05-12_18-31-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-32-26.mp4 → NAS 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-32-56.mp4 → NAS ‹ 201Krsync MacBook Pro Microphone (input)_2026-05-12_18-33-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-34-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-35-26.mp4 → NAS ‹ 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-35-56.mp4 → NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_18-36-26.mp4 NAS ‹ 206Krsync MacBook Pro Microphone (input)_2026-05-12_18-36-56.mp4 → NAS ‹ 205Krsync MacBook Pro Microphone (input)_2026-05-12_18-37-26.mp4 → NAS + 201Krsync MacBook Pro Microphone (input)_2026-05-12_18-37-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-38-26.mp4 • NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-38-56.mp4 → NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_18-39-26.mp4 → NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_18-39-56.mp4 → NAS ‹ 195Krsync MacBook Pro Microphone (input)_2026-05-12_18-40-26.mp4 → NAS ‹ 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-40-56.mp4 → NAS ‹ 202Krsync MacBook Pro Microphone (input)_2026-05-12_18-41-26.mp4 → NAS + 203Krsync MacBook Pro Microphone (input)_2026-05-12_18-42-26.mp4 → NAS ‹ 209Krsync MacBook Pro Microphone (input)_2026-05-12_18-43-26.mp4 → NAS + 207Krsync MacBook Pro Microphone (input)_2026-05-12_18-44-26.mp4 → NAS ‹ 210Krsync MacBook Pro Microphone (input)_2026-05-12_18-45-26.mp4 → NAS ‹ 207Kaudio files total:1113 file(s), 145M[+09m26s] • Copying screenpipe logs for 2026-05-12rsync logs → NAS• 1 file(s), 288K[2026-05-1321:46:00][2026-05-1321:46:00J[2026-05-1321:46:00]Archive DB size:Total time:2.0G9m26sSync complete for 2026-05-12[2026-05-1321:46:00]Lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-13[2026-05-1409:28:19][2026-05-1409:28:19JScreenpipe sync starting for: 2026-05-13[2026-05-1409:28:19][+00m00s]• PreflightchecksSource DB:OK[2026-05-14 09:28:19](5.6G)ERROR: NAS not mounted at /Volumes/screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~screenpipe"[EMAIL] 14 May 9:28:29181ec2-user@ip-10-20-31-14...₴7...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38769
|
1439
|
57
|
2026-05-14T06:28:29.805283+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740109805_m2.jpg...
|
iTerm2
|
ec2-user@ip-10-30-129-190:~
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Favouritesjiminny() AirDrop@ Recents* Application9 Favouritesjiminny() AirDrop@ Recents* Application9 Document• iCloud Drive992 Svnc tolde0 DXP4800PLUS-B5F A€ Networ!• Orange• Red• Yellov• Greer• Blue• Purple• All Tags.Windowe System Audio (output2026-05-1217-30-28.mp4•1 MacBook Pro Micronhone (inout) 2026-05-12 17-29-58.mn4D System Audio (output)_2026-05-12_17-29-58.mp40 MacBook Pro Microphone (input) 2026-05-12 17-29-28.mp401 Svstem Audio (outout) 2026-05-12 17-29-28.mo4• MacBook Pro Microphone (input) 2026-05-12_17-28-58.mp4• System Audio (output)_2026-05-12_17-28-58.mp4• MacBook Pro Microphone (input)_ 2026-05-12_17-28-28.mp4|• System Audio (output)_2026-05-12_17-28-28.mp4(input)_2026-05-12_17-27-58.mp4• System Audio (output) 2026-05-12 17-27-58.mp401 MacBook Pro Micronhone (inout) 2026-05-12 17-27-28 mo4D System Audio (output)_2026-05-12_17-27-28.mp4• MacBook Pro Microphone (input)_2026-05-12_17-26-58.mp4• System Audio (outout) 2026-05-1217-26-58.mp4• MacBook Pro Microphone (input)_ 2026-05-12_17-26-28.mp4System Audio (output)_2026-05-12_17-26-28.mp4esystem Audio (output 2026-05-121/-20-58.mp4• MacBook Pro Microphone (input)_2026-05-12_17-25-58.mp4D System Audio (output)_2026-05-12_17-25-28.mp4• MacBook Pro Microphone (input) 2026-05-12_17-25-28.mp40 Svstem Audio (outout) 2026-05-12 17-24-58.mo4• MacBook Pro Microphone (input) 2026-05-12_17-24-58.mp4MacBook Pro Micronh2026-05-12_17-24-28.mp4esystem Audio (output 2026-05-1217-24-28.mp4@ MacRook Dro Micronhone (innut) 2026-05-12 17-22-58 mn4• Svstem Audio (outout) 2026-05-12 17-23-58.mр4• масьоок Pro Micropnone (input 2020-05-12 1/-23-28.mp401 Svstem Audio (outout 2026-05-2 17-23-28.mo4|@ MacBook Pro Microphone (input) 2026-05-12_17-22-58.mp4D System Audio (output)_2026-05-12_17-22-58.mp4• MacBook Pro Microphone (input)_ 2026-05-12_17-22-28.mp4@1 Suctem Audio (outnut) 2026-05-12 17-22-28 mn/D System Audio (output) _2026-05-12_17-21-56.mp4• MacBook Pro Microphone (input) 2026-05-12 17-21-56.mp401 Lakvlak bose ac25 l| (inout) 2026-05-12 14-22-38.mo4• LakyLak bose qc35 Il (input)_2026-05-12_14-21-38.mp4LakyLak bose qc35 II (input)_2026-05-12_14-15-09.mp4l Lakylak bose accs inout2026-05-12 14-10-40.mo4|al lakvlak hace ac25 ll finnut) 2026-05-12 11-09-11 mл/• MacBook Prene (inout) 2026-05-12 13-35-39.mр4• MacBook Pro Microphone (input) 2026-05-12_13-00-11.mp4@1 MacBook Pro Micronhone (inout) 2026-05-12 12-59-41.mo4D MacBook Pro Microphone (input)_ 2026-05-12_12-59-11.mp4• MacBook Pro Microphone (input) _2026-05-12_12-22-51.mр401 MacBook Pro Microphone (inout) 2026-05-12 12-22-21.mo4@ MacBook Pro Microphone (input) 2026-05-12 12-21-51.mp4• MacBook Pro Microphone• MacBook Pro Microphone (input) 2026-05-12 12-20-51.mp4@ MacRook Pro Micronhone (innut) 2026-05-12 12-20-21 mn/• MacBook Pro Microphone (input)_2026-05-12_12-19-52.mp4• MacBook Pro Microphone (input) 2026-05-12_ 12-19-22.mр401 MacBook Pro Micronhone (inout) 2026-05-12 12-18-52 mo4a Morponl Dra Micranhono hool 0006 06 70 42.19.29 мл/.v Q SearchDate Modified12 May 2026 at 20:3012 Mav 2026 at 20:3012 May 2026 at 20:301< May <020 al 20-2512 Mav 2026 at 20:2912 May 2026 at 20:2912 May 2026 at 20:2912 May 2026 at 20:2812 May 2026 at 20:2812 May 2026 at 20:2812 May 2026 at 20:2812 Mav 2026 at 20:2712 May 2026 at 20:2712 May 2026 at 20:2712 May 2026 at 20:2712 May 2026 at 20:2612 May 2026 at 20.2612 Mav 2026 at 20:2612 May 2026 at 20:2512 May 2026 at 20:2512 May 2026 at 20:2512 May 2026 at 20:2512 May 2026 at 20:2412 Mav 2026 at 20:24|12 May 2026 at 20:2312 May 2026 at 20:2312 May 2026 at 20.2212 Mav 2026 at 20:2212 May 2026 at 20:2212 May 2026 at 20:2212 Mav 2026 at 17:2312 May 2026 at 17:2212 Mav 2026 at 17:11112 Mav 2026 at 17:0812 Mav 2026 at 16:3612 May 2026 at 16:0012 Mav 2026 at 16:00.12 May 2026 at 15:5912 May 2026 at 15:2312 Mav 2026 at 15:2212 Mav 2026 at 15:2912 May 2026 at 15:2112 Mav 2026 at 15:20112 May 2026 at 15:2012 May 2026 at 15:1912 Mav 2026 at 15:19MA 2006 C+ 46.1012 May 2020 at 1519,4990 items. 13.63 GB avZUUNe5 KBMPEG-4 movie207 KB MPEG-4 movie5 KB205 KBMPEG-4 movie5 KBMPEG-4 movie213 KB MPEG-4 movie5 KB207 KEMPEG-4 movie5KR MDEG_A movid198 KBMPEG-4 movie209 KB.MPEG-4 movie5 KB MPEG-4 movie210 KBMPEG-4 movie5 K:206 KB MPEG-4 movie5 KBMPEG-4 movie211 KRIMPEG-A movid5 KB MPEG-4 movie200 KBMPEG-4 movie5 K:203 KBMDEC.A movid206 KB200 KRMPEG-4 movieMDEG-A movie5 KB MPEG-4 movie204 KBMPEG-4 movieMPEG-4 movie200 KB MPEG-4 movie5 KB199 KE5 KRMPEG-4 movieMDEG-A movie5 KBMPEG-4 movie199 KB211 KEMPEG-4 movieMPEG-4 movie226 KB MPEG-4 movie203 KB212 KMPEG-4 movie.221 KR213 KB199 KB208 KEMDSG-A movieMPEG-4 movieMPEG-4 movieMPFG.A movie207 KB247 KB216 KBMPEG-4 movieMPEG-4 movie215 KR219 KB216 KEMDEG.A movioMPEG-4 movie218 KPMPFG-A movie232 KB MPEG-4 movie217 KB210 KEMPEG-4 movien10 vo TMDEeA movin•• C• jiminny(• AirDrop•) Recents* Applications9 Documents(• Downloadci lukas• iCloud Drive999 Sunc tolderL DXP4800PLUS-Bor4 NetworkO CRM• Orange• Red• YellowCroor• Blue• Purple•All Tags….88MCscreenoipedb.sqlite-shm• db.sqlite-walv logsv date2026-05-17-•_ 2026-05-11•2026-05-07> 2026-05-06•2026-04-282026-04-272026-04.252026-04-24• 2026-04-22•2026-04-23> * 2026-04-20• 2026-04-2'2026-04-17• 2026.04.162026-04-152026-04-14archive.dhscriptsscreenbive sunc old.shscreenpipe sync copy.sh• screenpipe_fts_migrate.shdb.sqlitearchive dh hakenre-inctallicscreenpipe_sync_updated.sharchive.db-bak→Taorapp_settings.json• screenpipe.dboineslohl1Daily - Platform - in 17 m100% CQ SearchDate ModifiedToday at 0:29Yesterday at 21:52Yesterday at 21:46Yesterdav at 21:42Yesterdav at 21:49Yesterday at 21:058 Mav 2026 at 9:266 May 2026 at 21:0228 Apr 2026 at 22:2328 Apr 2026 at 9:1926 Anr 2026 at 16:2 224 Apr 2026 at 22:3024 Apr 2026 at 12:08Aar 200G dt 1901422 Apr 2026 at 9:1618 Aor 2026 at 13:3517 Anr 2026 at 9:5716 Apr 2026 at 9:1315 Apr 2026 at 9:59Yecterdav at 21:41Vootordou at 24011Yesterday at 20:5)Yesterdav at 10:2112 May 2026 at 21:2012 Mav 2026 at 20:2:12 Mav 2026 at 15:2010 Mav 2026 at 13:0610 May 2026 at 12:3126 Aor 2026 at 20:1018 Anr 2006 at 17:1213 Apr 2026 at 17:2111 Apr 2026 at 16:51Thu 14 May 9:28:2922 KP Nosumont1,4 MBFolder8.27 GBFolden42.2 MB Folder605,8 MBFolder305.6 M:Folden18,8 MB Folder339,8 MBFolder20 7 MR Colden149.1 MB Folder265,5 MB171.8 MEFolden525.4 MB Folder699.6 MEFolder927 2 MR Soldon2.15 GF1,09 GBCaldor717 GrDocument70.01 GBCaldorZero bytes18K:Terminal scriots15 Kp9 KB4,46 GB12 02 GPTorminal corinteeaatmian20 KB Terminal scripts11,13 CB193 K3IFolden21 hutoc ICONl13 KPDAfans 400 T0 Auiahll...
|
NULL
|
-5311984330025688828
|
NULL
|
click
|
ocr
|
NULL
|
Favouritesjiminny() AirDrop@ Recents* Application9 Favouritesjiminny() AirDrop@ Recents* Application9 Document• iCloud Drive992 Svnc tolde0 DXP4800PLUS-B5F A€ Networ!• Orange• Red• Yellov• Greer• Blue• Purple• All Tags.Windowe System Audio (output2026-05-1217-30-28.mp4•1 MacBook Pro Micronhone (inout) 2026-05-12 17-29-58.mn4D System Audio (output)_2026-05-12_17-29-58.mp40 MacBook Pro Microphone (input) 2026-05-12 17-29-28.mp401 Svstem Audio (outout) 2026-05-12 17-29-28.mo4• MacBook Pro Microphone (input) 2026-05-12_17-28-58.mp4• System Audio (output)_2026-05-12_17-28-58.mp4• MacBook Pro Microphone (input)_ 2026-05-12_17-28-28.mp4|• System Audio (output)_2026-05-12_17-28-28.mp4(input)_2026-05-12_17-27-58.mp4• System Audio (output) 2026-05-12 17-27-58.mp401 MacBook Pro Micronhone (inout) 2026-05-12 17-27-28 mo4D System Audio (output)_2026-05-12_17-27-28.mp4• MacBook Pro Microphone (input)_2026-05-12_17-26-58.mp4• System Audio (outout) 2026-05-1217-26-58.mp4• MacBook Pro Microphone (input)_ 2026-05-12_17-26-28.mp4System Audio (output)_2026-05-12_17-26-28.mp4esystem Audio (output 2026-05-121/-20-58.mp4• MacBook Pro Microphone (input)_2026-05-12_17-25-58.mp4D System Audio (output)_2026-05-12_17-25-28.mp4• MacBook Pro Microphone (input) 2026-05-12_17-25-28.mp40 Svstem Audio (outout) 2026-05-12 17-24-58.mo4• MacBook Pro Microphone (input) 2026-05-12_17-24-58.mp4MacBook Pro Micronh2026-05-12_17-24-28.mp4esystem Audio (output 2026-05-1217-24-28.mp4@ MacRook Dro Micronhone (innut) 2026-05-12 17-22-58 mn4• Svstem Audio (outout) 2026-05-12 17-23-58.mр4• масьоок Pro Micropnone (input 2020-05-12 1/-23-28.mp401 Svstem Audio (outout 2026-05-2 17-23-28.mo4|@ MacBook Pro Microphone (input) 2026-05-12_17-22-58.mp4D System Audio (output)_2026-05-12_17-22-58.mp4• MacBook Pro Microphone (input)_ 2026-05-12_17-22-28.mp4@1 Suctem Audio (outnut) 2026-05-12 17-22-28 mn/D System Audio (output) _2026-05-12_17-21-56.mp4• MacBook Pro Microphone (input) 2026-05-12 17-21-56.mp401 Lakvlak bose ac25 l| (inout) 2026-05-12 14-22-38.mo4• LakyLak bose qc35 Il (input)_2026-05-12_14-21-38.mp4LakyLak bose qc35 II (input)_2026-05-12_14-15-09.mp4l Lakylak bose accs inout2026-05-12 14-10-40.mo4|al lakvlak hace ac25 ll finnut) 2026-05-12 11-09-11 mл/• MacBook Prene (inout) 2026-05-12 13-35-39.mр4• MacBook Pro Microphone (input) 2026-05-12_13-00-11.mp4@1 MacBook Pro Micronhone (inout) 2026-05-12 12-59-41.mo4D MacBook Pro Microphone (input)_ 2026-05-12_12-59-11.mp4• MacBook Pro Microphone (input) _2026-05-12_12-22-51.mр401 MacBook Pro Microphone (inout) 2026-05-12 12-22-21.mo4@ MacBook Pro Microphone (input) 2026-05-12 12-21-51.mp4• MacBook Pro Microphone• MacBook Pro Microphone (input) 2026-05-12 12-20-51.mp4@ MacRook Pro Micronhone (innut) 2026-05-12 12-20-21 mn/• MacBook Pro Microphone (input)_2026-05-12_12-19-52.mp4• MacBook Pro Microphone (input) 2026-05-12_ 12-19-22.mр401 MacBook Pro Micronhone (inout) 2026-05-12 12-18-52 mo4a Morponl Dra Micranhono hool 0006 06 70 42.19.29 мл/.v Q SearchDate Modified12 May 2026 at 20:3012 Mav 2026 at 20:3012 May 2026 at 20:301< May <020 al 20-2512 Mav 2026 at 20:2912 May 2026 at 20:2912 May 2026 at 20:2912 May 2026 at 20:2812 May 2026 at 20:2812 May 2026 at 20:2812 May 2026 at 20:2812 Mav 2026 at 20:2712 May 2026 at 20:2712 May 2026 at 20:2712 May 2026 at 20:2712 May 2026 at 20:2612 May 2026 at 20.2612 Mav 2026 at 20:2612 May 2026 at 20:2512 May 2026 at 20:2512 May 2026 at 20:2512 May 2026 at 20:2512 May 2026 at 20:2412 Mav 2026 at 20:24|12 May 2026 at 20:2312 May 2026 at 20:2312 May 2026 at 20.2212 Mav 2026 at 20:2212 May 2026 at 20:2212 May 2026 at 20:2212 Mav 2026 at 17:2312 May 2026 at 17:2212 Mav 2026 at 17:11112 Mav 2026 at 17:0812 Mav 2026 at 16:3612 May 2026 at 16:0012 Mav 2026 at 16:00.12 May 2026 at 15:5912 May 2026 at 15:2312 Mav 2026 at 15:2212 Mav 2026 at 15:2912 May 2026 at 15:2112 Mav 2026 at 15:20112 May 2026 at 15:2012 May 2026 at 15:1912 Mav 2026 at 15:19MA 2006 C+ 46.1012 May 2020 at 1519,4990 items. 13.63 GB avZUUNe5 KBMPEG-4 movie207 KB MPEG-4 movie5 KB205 KBMPEG-4 movie5 KBMPEG-4 movie213 KB MPEG-4 movie5 KB207 KEMPEG-4 movie5KR MDEG_A movid198 KBMPEG-4 movie209 KB.MPEG-4 movie5 KB MPEG-4 movie210 KBMPEG-4 movie5 K:206 KB MPEG-4 movie5 KBMPEG-4 movie211 KRIMPEG-A movid5 KB MPEG-4 movie200 KBMPEG-4 movie5 K:203 KBMDEC.A movid206 KB200 KRMPEG-4 movieMDEG-A movie5 KB MPEG-4 movie204 KBMPEG-4 movieMPEG-4 movie200 KB MPEG-4 movie5 KB199 KE5 KRMPEG-4 movieMDEG-A movie5 KBMPEG-4 movie199 KB211 KEMPEG-4 movieMPEG-4 movie226 KB MPEG-4 movie203 KB212 KMPEG-4 movie.221 KR213 KB199 KB208 KEMDSG-A movieMPEG-4 movieMPEG-4 movieMPFG.A movie207 KB247 KB216 KBMPEG-4 movieMPEG-4 movie215 KR219 KB216 KEMDEG.A movioMPEG-4 movie218 KPMPFG-A movie232 KB MPEG-4 movie217 KB210 KEMPEG-4 movien10 vo TMDEeA movin•• C• jiminny(• AirDrop•) Recents* Applications9 Documents(• Downloadci lukas• iCloud Drive999 Sunc tolderL DXP4800PLUS-Bor4 NetworkO CRM• Orange• Red• YellowCroor• Blue• Purple•All Tags….88MCscreenoipedb.sqlite-shm• db.sqlite-walv logsv date2026-05-17-•_ 2026-05-11•2026-05-07> 2026-05-06•2026-04-282026-04-272026-04.252026-04-24• 2026-04-22•2026-04-23> * 2026-04-20• 2026-04-2'2026-04-17• 2026.04.162026-04-152026-04-14archive.dhscriptsscreenbive sunc old.shscreenpipe sync copy.sh• screenpipe_fts_migrate.shdb.sqlitearchive dh hakenre-inctallicscreenpipe_sync_updated.sharchive.db-bak→Taorapp_settings.json• screenpipe.dboineslohl1Daily - Platform - in 17 m100% CQ SearchDate ModifiedToday at 0:29Yesterday at 21:52Yesterday at 21:46Yesterdav at 21:42Yesterdav at 21:49Yesterday at 21:058 Mav 2026 at 9:266 May 2026 at 21:0228 Apr 2026 at 22:2328 Apr 2026 at 9:1926 Anr 2026 at 16:2 224 Apr 2026 at 22:3024 Apr 2026 at 12:08Aar 200G dt 1901422 Apr 2026 at 9:1618 Aor 2026 at 13:3517 Anr 2026 at 9:5716 Apr 2026 at 9:1315 Apr 2026 at 9:59Yecterdav at 21:41Vootordou at 24011Yesterday at 20:5)Yesterdav at 10:2112 May 2026 at 21:2012 Mav 2026 at 20:2:12 Mav 2026 at 15:2010 Mav 2026 at 13:0610 May 2026 at 12:3126 Aor 2026 at 20:1018 Anr 2006 at 17:1213 Apr 2026 at 17:2111 Apr 2026 at 16:51Thu 14 May 9:28:2922 KP Nosumont1,4 MBFolder8.27 GBFolden42.2 MB Folder605,8 MBFolder305.6 M:Folden18,8 MB Folder339,8 MBFolder20 7 MR Colden149.1 MB Folder265,5 MB171.8 MEFolden525.4 MB Folder699.6 MEFolder927 2 MR Soldon2.15 GF1,09 GBCaldor717 GrDocument70.01 GBCaldorZero bytes18K:Terminal scriots15 Kp9 KB4,46 GB12 02 GPTorminal corinteeaatmian20 KB Terminal scripts11,13 CB193 K3IFolden21 hutoc ICONl13 KPDAfans 400 T0 Auiahll...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38770
|
1437
|
47
|
2026-05-14T06:28:33.687910+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740113687_m1.jpg...
|
iTerm2
|
ec2-user@ip-10-30-129-190:~
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rsync System Audio (output)_2026-05-12_06-55-21.mp rsync System Audio (output)_2026-05-12_06-55-21.mp4 → NAS ✓ 249K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-55-44.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_06-55-50.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-56-14.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-12_06-56-19.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-56-44.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-12_06-56-49.mp4 → NAS ✓ 247K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-57-14.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_06-57-17.mp4 → NAS ✓ 241K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-57-44.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-12_06-57-46.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-58-14.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_06-58-44.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-58-44.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_06-59-13.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-59-13.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_06-59-43.mp4 → NAS ✓ 241K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-59-43.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-12_07-00-12.mp4 → NAS ✓ 258K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-00-13.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_07-00-41.mp4 → NAS ✓ 253K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-00-43.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_07-01-09.mp4 → NAS ✓ 257K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-01-13.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-12_07-01-37.mp4 → NAS ✓ 252K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-01-42.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_07-02-06.mp4 → NAS ✓ 252K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-02-12.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_07-02-36.mp4 → NAS ✓ 251K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-02-42.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_07-03-04.mp4 → NAS ✓ 257K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-03-12.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_07-03-31.mp4 → NAS ✓ 264K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-03-42.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-12_07-04-00.mp4 → NAS ✓ 253K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-04-12.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_07-04-29.mp4 → NAS ✓ 236K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-04-42.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-12_07-04-59.mp4 → NAS ✓ 253K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-05-11.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_07-05-27.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-05-41.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-12_07-05-57.mp4 → NAS ✓ 244K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-06-11.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_07-06-26.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-06-41.mp4 → NAS ✓ 199K
rsync System Audio (output)_2026-05-12_07-06-56.mp4 → NAS ✓ 247K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-07-11.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-12_07-07-24.mp4 → NAS ✓ 235K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-07-40.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_07-07-51.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-08-10.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-12_07-08-20.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-08-40.mp4 → NAS ✓ 225K
rsync System Audio (output)_2026-05-12_07-08-47.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-09-10.mp4 → NAS ✓ 223K
rsync System Audio (output)_2026-05-12_07-09-17.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-09-40.mp4 → NAS ✓ 223K
rsync System Audio (output)_2026-05-12_07-09-45.mp4 → NAS ✓ 249K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-10-09.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-12_07-10-13.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-10-39.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-12_07-10-42.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-11-09.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-12_07-11-11.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-11-39.mp4 → NAS ✓ 215K
rsync System Audio (output)_2026-05-12_07-12-09.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-12-09.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-12_07-12-38.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-12-39.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-12_07-13-08.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-13-09.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-12_07-13-38.mp4 → NAS ✓ 106K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-13-39.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-12_07-14-07.mp4 → NAS ✓ 14K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-14-08.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-12_07-14-36.mp4 → NAS ✓ 44K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-14-38.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-12_07-15-06.mp4 → NAS ✓ 5.0K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-15-08.mp4 → NAS ✓ 210K
rsync System Audio (output)_2026-05-12_07-15-35.mp4 → NAS ✓ 5.0K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-15-38.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-12_07-16-05.mp4 → NAS ✓ 5.0K
rsync MacBook Pro Microphone (input)_2026-05-12_07-16-29.mp4 → NAS ✓ 43K
rsync MacBook Pro Microphone (input)_2026-05-12_07-16-37.mp4 → NAS ✓ 16K
rsync System Audio (output)_2026-05-12_07-16-35.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-16-47.mp4 → NAS ✓ 10K
rsync System Audio (output)_2026-05-12_07-17-05.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-17-19.mp4 → NAS ✓ 27K
rsync System Audio (output)_2026-05-12_07-17-34.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-17-49.mp4 → NAS ✓ 56K
rsync System Audio (output)_2026-05-12_07-18-04.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-18-19.mp4 → NAS ✓ 66K
rsync System Audio (output)_2026-05-12_07-18-34.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-18-49.mp4 → NAS ✓ 137K
rsync System Audio (output)_2026-05-12_07-19-04.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-19-19.mp4 → NAS ✓ 148K
rsync System Audio (output)_2026-05-12_07-19-33.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-19-49.mp4 → NAS ✓ 93K
rsync System Audio (output)_2026-05-12_07-20-03.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-20-19.mp4 → NAS ✓ 110K
rsync System Audio (output)_2026-05-12_07-20-33.mp4 → NAS ✓ 83K
rsync soundcore AeroClip (input)_2026-05-12_07-20-49.mp4 → NAS ✓ 182K
rsync System Audio (output)_2026-05-12_07-21-03.mp4 → NAS ✓ 47K
rsync soundcore AeroClip (input)_2026-05-12_07-21-19.mp4 → NAS ✓ 128K
rsync System Audio (output)_2026-05-12_07-21-33.mp4 → NAS ✓ 223K
rsync soundcore AeroClip (input)_2026-05-12_07-21-49.mp4 → NAS ✓ 68K
rsync System Audio (output)_2026-05-12_07-22-02.mp4 → NAS ✓ 90K
rsync soundcore AeroClip (input)_2026-05-12_07-22-19.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-22-32.mp4 → NAS ✓ 30K
rsync soundcore AeroClip (input)_2026-05-12_07-22-49.mp4 → NAS ✓ 19K
rsync System Audio (output)_2026-05-12_07-23-02.mp4 → NAS ✓ 210K
rsync soundcore AeroClip (input)_2026-05-12_07-23-19.mp4 → NAS ✓ 27K
rsync System Audio (output)_2026-05-12_07-23-32.mp4 → NAS ✓ 84K
rsync soundcore AeroClip (input)_2026-05-12_07-23-49.mp4 → NAS ✓ 22K
rsync System Audio (output)_2026-05-12_07-24-02.mp4 → NAS ✓ 209K
rsync soundcore AeroClip (input)_2026-05-12_07-24-19.mp4 → NAS ✓ 33K
rsync System Audio (output)_2026-05-12_07-24-32.mp4 → NAS ✓ 103K
rsync soundcore AeroClip (input)_2026-05-12_07-24-49.mp4 → NAS ✓ 55K
rsync System Audio (output)_2026-05-12_07-25-01.mp4 → NAS ✓ 139K
rsync soundcore AeroClip (input)_2026-05-12_07-25-19.mp4 → NAS ✓ 20K
rsync System Audio (output)_2026-05-12_07-25-31.mp4 → NAS ✓ 135K
rsync soundcore AeroClip (input)_2026-05-12_07-25-49.mp4 → NAS ✓ 13K
rsync System Audio (output)_2026-05-12_07-26-01.mp4 → NAS ✓ 174K
rsync soundcore AeroClip (input)_2026-05-12_07-26-19.mp4 → NAS ✓ 14K
rsync System Audio (output)_2026-05-12_07-26-31.mp4 → NAS ✓ 170K
rsync soundcore AeroClip (input)_2026-05-12_07-26-49.mp4 → NAS ✓ 29K
rsync System Audio (output)_2026-05-12_07-27-01.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_07-27-19.mp4 → NAS ✓ 23K
rsync System Audio (output)_2026-05-12_07-27-31.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-27-49.mp4 → NAS ✓ 44K
rsync System Audio (output)_2026-05-12_07-28-01.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-28-19.mp4 → NAS ✓ 24K
rsync System Audio (output)_2026-05-12_07-28-31.mp4 → NAS ✓ 42K
rsync soundcore AeroClip (input)_2026-05-12_07-28-49.mp4 → NAS ✓ 35K
rsync System Audio (output)_2026-05-12_07-29-00.mp4 → NAS ✓ 63K
rsync soundcore AeroClip (input)_2026-05-12_07-29-19.mp4 → NAS ✓ 24K
rsync System Audio (output)_2026-05-12_07-29-30.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-29-49.mp4 → NAS ✓ 18K
rsync System Audio (output)_2026-05-12_07-30-00.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-30-19.mp4 → NAS ✓ 42K
rsync System Audio (output)_2026-05-12_07-30-30.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-30-49.mp4 → NAS ✓ 36K
rsync System Audio (output)_2026-05-12_07-31-00.mp4 → NAS ✓ 62K
rsync soundcore AeroClip (input)_2026-05-12_07-31-19.mp4 → NAS ✓ 21K
rsync System Audio (output)_2026-05-12_07-31-30.mp4 → NAS ✓ 134K
rsync soundcore AeroClip (input)_2026-05-12_07-31-49.mp4 → NAS ✓ 18K
rsync System Audio (output)_2026-05-12_07-31-59.mp4 → NAS ✓ 164K
rsync soundcore AeroClip (input)_2026-05-12_07-32-19.mp4 → NAS ✓ 41K
rsync System Audio (output)_2026-05-12_07-32-29.mp4 → NAS ✓ 28K
rsync soundcore AeroClip (input)_2026-05-12_07-32-49.mp4 → NAS ✓ 36K
rsync System Audio (output)_2026-05-12_07-32-59.mp4 → NAS ✓ 33K
rsync soundcore AeroClip (input)_2026-05-12_07-33-18.mp4 → NAS ✓ 19K
rsync System Audio (output)_2026-05-12_07-33-29.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-33-48.mp4 → NAS ✓ 79K
rsync System Audio (output)_2026-05-12_07-33-58.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-34-18.mp4 → NAS ✓ 82K
rsync System Audio (output)_2026-05-12_07-34-28.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-34-48.mp4 → NAS ✓ 91K
rsync System Audio (output)_2026-05-12_07-34-58.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-35-18.mp4 → NAS ✓ 71K
rsync System Audio (output)_2026-05-12_07-35-28.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-35-48.mp4 → NAS ✓ 45K
rsync System Audio (output)_2026-05-12_07-35-58.mp4 → NAS ✓ 158K
rsync soundcore AeroClip (input)_2026-05-12_07-36-18.mp4 → NAS ✓ 23K
rsync System Audio (output)_2026-05-12_07-36-27.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-36-48.mp4 → NAS ✓ 22K
rsync System Audio (output)_2026-05-12_07-36-57.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-37-18.mp4 → NAS ✓ 33K
rsync System Audio (output)_2026-05-12_07-37-27.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-37-48.mp4 → NAS ✓ 19K
rsync System Audio (output)_2026-05-12_07-37-57.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-38-18.mp4 → NAS ✓ 17K
rsync System Audio (output)_2026-05-12_07-38-26.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-38-48.mp4 → NAS ✓ 40K
rsync System Audio (output)_2026-05-12_07-38-56.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-39-18.mp4 → NAS ✓ 25K
rsync System Audio (output)_2026-05-12_07-39-26.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-39-48.mp4 → NAS ✓ 32K
rsync System Audio (output)_2026-05-12_07-39-55.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-40-18.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-40-25.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 → NAS ✓ 14K
rsync System Audio (output)_2026-05-12_07-40-55.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-41-18.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-41-24.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-41-48.mp4 → NAS ✓ 28K
rsync System Audio (output)_2026-05-12_07-41-54.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-42-18.mp4 → NAS ✓ 45K
rsync System Audio (output)_2026-05-12_07-42-24.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-42-48.mp4 → NAS ✓ 67K
rsync System Audio (output)_2026-05-12_07-42-54.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-43-18.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-43-23.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-43-47.mp4 → NAS ✓ 16K
rsync System Audio (output)_2026-05-12_07-43-53.mp4 → NAS ✓ 5.0K
rsync System Audio (output)_2026-05-12_07-44-23.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-44-47.mp4 → NAS ✓ 9.0K
rsync System Audio (output)_2026-05-12_07-44-53.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-45-19.mp4 → NAS ✓ 37K
rsync System Audio (output)_2026-05-12_07-45-22.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-45-49.mp4 → NAS ✓ 23K
rsync System Audio (output)_2026-05-12_07-45-51.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-46-19.mp4 → NAS ✓ 7.0K
rsync System Audio (output)_2026-05-12_07-46-21.mp4 → NAS ✓ 5.0K
rsync System Audio (output)_2026-05-12_07-46-51.mp4 → NAS ✓ 5.0K
rsync System Audio (output)_2026-05-12_07-47-21.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-47-19.mp4 → NAS ✓ 7.0K
rsync System Audio (output)_2026-05-12_07-47-51.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-47-51.mp4 → NAS ✓ 16K
rsync System Audio (output)_2026-05-12_07-48-21.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-48-21.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-48-50.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-48-51.mp4 → NAS ✓ 14K
rsync System Audio (output)_2026-05-12_07-49-20.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-49-21.mp4 → NAS ✓ 11K
rsync System Audio (output)_2026-05-12_07-49-50.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-49-51.mp4 → NAS ✓ 6.0K
rsync System Audio (output)_2026-05-12_07-50-20.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-50-27.mp4 → NAS ✓ 25K
rsync System Audio (output)_2026-05-12_07-50-50.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-50-59.mp4 → NAS ✓ 10K
rsync System Audio (output)_2026-05-12_07-51-19.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-51-29.mp4 → NAS ✓ 12K
rsync System Audio (output)_2026-05-12_07-51-48.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-51-59.mp4 → NAS ✓ 17K
rsync System Audio (output)_2026-05-12_07-52-18.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-52-29.mp4 → NAS ✓ 17K
rsync System Audio (output)_2026-05-12_07-52-48.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-52-59.mp4 → NAS ✓ 13K
rsync System Audio (output)_2026-05-12_07-53-18.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-53-29.mp4 → NAS ✓ 18K
rsync System Audio (output)_2026-05-12_07-53-48.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-53-59.mp4 → NAS ✓ 9.0K
rsync System Audio (output)_2026-05-12_07-54-17.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-54-29.mp4 → NAS ✓ 7.0K
rsync System Audio (output)_2026-05-12_07-54-47.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-54-59.mp4 → NAS ✓ 12K
rsync System Audio (output)_2026-05-12_07-55-17.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-55-29.mp4 → NAS ✓ 38K
rsync System Audio (output)_2026-05-12_07-55-47.mp4 → NAS ✓ 170K
rsync soundcore AeroClip (input)_2026-05-12_07-55-58.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-12_07-56-16.mp4 → NAS ✓ 194K
rsync soundcore AeroClip (input)_2026-05-12_07-56-28.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-12_07-56-45.mp4 → NAS ✓ 196K
rsync soundcore AeroClip (input)_2026-05-12_07-56-58.mp4 → NAS ✓ 159K
rsync System Audio (output)_2026-05-12_07-57-15.mp4 → NAS ✓ 230K
rsync soundcore AeroClip (input)_2026-05-12_07-57-28.mp4 → NAS ✓ 107K
rsync System Audio (output)_2026-05-12_07-57-44.mp4 → NAS ✓ 238K
rsync soundcore AeroClip (input)_2026-05-12_07-57-58.mp4 → NAS ✓ 94K
rsync System Audio (output)_2026-05-12_07-58-14.mp4 → NAS ✓ 229K
rsync soundcore AeroClip (input)_2026-05-12_07-58-28.mp4 → NAS ✓ 107K
rsync System Audio (output)_2026-05-12_07-58-44.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_07-58-58.mp4 → NAS ✓ 84K
rsync System Audio (output)_2026-05-12_07-59-13.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-59-27.mp4 → NAS ✓ 52K
rsync System Audio (output)_2026-05-12_07-59-43.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-59-57.mp4 → NAS ✓ 65K
rsync System Audio (output)_2026-05-12_08-00-13.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-00-27.mp4 → NAS ✓ 170K
rsync System Audio (output)_2026-05-12_08-00-43.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-00-57.mp4 → NAS ✓ 163K
rsync System Audio (output)_2026-05-12_08-01-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-01-27.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-12_08-01-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-01-57.mp4 → NAS ✓ 219K
rsync System Audio (output)_2026-05-12_08-02-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-02-27.mp4 → NAS ✓ 161K
rsync System Audio (output)_2026-05-12_08-02-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-02-57.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-12_08-03-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-03-28.mp4 → NAS ✓ 124K
rsync System Audio (output)_2026-05-12_08-03-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-03-58.mp4 → NAS ✓ 181K
rsync System Audio (output)_2026-05-12_08-04-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-04-27.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-12_08-04-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-04-57.mp4 → NAS ✓ 247K
rsync System Audio (output)_2026-05-12_08-05-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-05-27.mp4 → NAS ✓ 239K
rsync System Audio (output)_2026-05-12_08-05-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-05-57.mp4 → NAS ✓ 250K
rsync System Audio (output)_2026-05-12_08-06-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-06-27.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-12_08-06-41.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-06-57.mp4 → NAS ✓ 247K
rsync System Audio (output)_2026-05-12_08-07-11.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-07-27.mp4 → NAS ✓ 238K
rsync System Audio (output)_2026-05-12_08-07-41.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-07-57.mp4 → NAS ✓ 136K
rsync System Audio (output)_2026-05-12_08-08-11.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-08-27.mp4 → NAS ✓ 177K
rsync System Audio (output)_2026-05-12_08-08-41.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-08-57.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-12_08-09-11.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-09-27.mp4 → NAS ✓ 219K
rsync soundcore AeroClip (input)_2026-05-12_08-09-57.mp4 → NAS ✓ 245K
rsync soundcore AeroClip (input)_2026-05-12_08-12-10.mp4 → NAS ✓ 58K
rsync soundcore AeroClip (input)_2026-05-12_08-12-42.mp4 → NAS ✓ 117K
rsync soundcore AeroClip (input)_2026-05-12_08-13-12.mp4 → NAS ✓ 67K
rsync soundcore AeroClip (input)_2026-05-12_08-13-42.mp4 → NAS ✓ 64K
rsync soundcore AeroClip (input)_2026-05-12_08-14-12.mp4 → NAS ✓ 92K
rsync soundcore AeroClip (input)_2026-05-12_08-14-42.mp4 → NAS ✓ 60K
rsync soundcore AeroClip (input)_2026-05-12_08-15-12.mp4 → NAS ✓ 64K
rsync soundcore AeroClip (input)_2026-05-12_08-15-42.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_08-16-12.mp4 → NAS ✓ 17K
rsync soundcore AeroClip (input)_2026-05-12_08-16-42.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_08-17-12.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_08-17-42.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-18-12.mp4 → NAS ✓ 7.0K
rsync soundcore AeroClip (input)_2026-05-12_08-19-13.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_08-19-45.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_08-20-15.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_08-20-45.mp4 → NAS ✓ 14K
rsync soundcore AeroClip (input)_2026-05-12_08-21-15.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_08-21-45.mp4 → NAS ✓ 18K
rsync soundcore AeroClip (input)_2026-05-12_08-22-15.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-22-45.mp4 → NAS ✓ 17K
rsync soundcore AeroClip (input)_2026-05-12_08-23-15.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_08-23-45.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-24-15.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_08-24-45.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_08-25-15.mp4 → NAS ✓ 28K
rsync soundcore AeroClip (input)_2026-05-12_08-25-45.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_08-26-28.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_08-27-00.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_08-27-30.mp4 → NAS ✓ 38K
rsync soundcore AeroClip (input)_2026-05-12_08-28-00.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_08-28-30.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_08-29-00.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_08-29-30.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_08-30-00.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_08-30-30.mp4 → NAS ✓ 29K
rsync soundcore AeroClip (input)_2026-05-12_08-31-00.mp4 → NAS ✓ 60K
rsync soundcore AeroClip (input)_2026-05-12_08-31-30.mp4 → NAS ✓ 124K
rsync soundcore AeroClip (input)_2026-05-12_08-32-00.mp4 → NAS ✓ 73K
rsync soundcore AeroClip (input)_2026-05-12_08-32-30.mp4 → NAS ✓ 39K
rsync soundcore AeroClip (input)_2026-05-12_08-32-59.mp4 → NAS ✓ 52K
rsync soundcore AeroClip (input)_2026-05-12_08-33-29.mp4 → NAS ✓ 127K
rsync soundcore AeroClip (input)_2026-05-12_08-33-59.mp4 → NAS ✓ 139K
rsync soundcore AeroClip (input)_2026-05-12_08-34-29.mp4 → NAS ✓ 169K
rsync soundcore AeroClip (input)_2026-05-12_08-34-59.mp4 → NAS ✓ 85K
rsync soundcore AeroClip (input)_2026-05-12_08-35-29.mp4 → NAS ✓ 30K
rsync soundcore AeroClip (input)_2026-05-12_08-35-59.mp4 → NAS ✓ 34K
rsync soundcore AeroClip (input)_2026-05-12_08-36-29.mp4 → NAS ✓ 47K
rsync soundcore AeroClip (input)_2026-05-12_08-37-10.mp4 → NAS ✓ 10K
rsync soundcore AeroClip (input)_2026-05-12_08-37-42.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_08-38-12.mp4 → NAS ✓ 123K
rsync soundcore AeroClip (input)_2026-05-12_08-38-42.mp4 → NAS ✓ 164K
rsync soundcore AeroClip (input)_2026-05-12_08-39-12.mp4 → NAS ✓ 179K
rsync soundcore AeroClip (input)_2026-05-12_08-39-42.mp4 → NAS ✓ 176K
rsync soundcore AeroClip (input)_2026-05-12_08-40-12.mp4 → NAS ✓ 173K
rsync soundcore AeroClip (input)_2026-05-12_08-40-42.mp4 → NAS ✓ 157K
rsync soundcore AeroClip (input)_2026-05-12_08-41-12.mp4 → NAS ✓ 101K
rsync soundcore AeroClip (input)_2026-05-12_08-41-42.mp4 → NAS ✓ 119K
rsync soundcore AeroClip (input)_2026-05-12_08-42-12.mp4 → NAS ✓ 79K
rsync soundcore AeroClip (input)_2026-05-12_08-42-42.mp4 → NAS ✓ 14K
rsync soundcore AeroClip (input)_2026-05-12_08-43-12.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_08-43-42.mp4 → NAS ✓ 25K
rsync soundcore AeroClip (input)_2026-05-12_08-44-12.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-44-42.mp4 → NAS ✓ 105K
rsync soundcore AeroClip (input)_2026-05-12_08-45-12.mp4 → NAS ✓ 160K
rsync soundcore AeroClip (input)_2026-05-12_08-45-41.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_08-46-11.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_08-46-41.mp4 → NAS ✓ 12K
rsync soundcore AeroClip (input)_2026-05-12_08-47-11.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-47-41.mp4 → NAS ✓ 47K
rsync soundcore AeroClip (input)_2026-05-12_08-48-11.mp4 → NAS ✓ 83K
rsync soundcore AeroClip (input)_2026-05-12_08-48-41.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_08-49-11.mp4 → NAS ✓ 40K
rsync soundcore AeroClip (input)_2026-05-12_08-49-41.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_08-50-11.mp4 → NAS ✓ 17K
rsync soundcore AeroClip (input)_2026-05-12_08-50-41.mp4 → NAS ✓ 125K
rsync soundcore AeroClip (input)_2026-05-12_08-51-11.mp4 → NAS ✓ 69K
rsync soundcore AeroClip (input)_2026-05-12_08-51-41.mp4 → NAS ✓ 67K
rsync soundcore AeroClip (input)_2026-05-12_08-52-11.mp4 → NAS ✓ 57K
rsync soundcore AeroClip (input)_2026-05-12_08-52-41.mp4 → NAS ✓ 38K
rsync soundcore AeroClip (input)_2026-05-12_08-53-11.mp4 → NAS ✓ 29K
rsync soundcore AeroClip (input)_2026-05-12_08-53-41.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_08-54-11.mp4 → NAS ✓ 29K
rsync soundcore AeroClip (input)_2026-05-12_08-54-41.mp4 → NAS ✓ 14K
rsync soundcore AeroClip (input)_2026-05-12_08-55-11.mp4 → NAS ✓ 39K
rsync soundcore AeroClip (input)_2026-05-12_08-55-41.mp4 → NAS ✓ 25K
rsync soundcore AeroClip (input)_2026-05-12_08-56-11.mp4 → NAS ✓ 31K
rsync soundcore AeroClip (input)_2026-05-12_08-56-41.mp4 → NAS ✓ 24K
rsync soundcore AeroClip (input)_2026-05-12_08-57-11.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_08-57-41.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_08-58-11.mp4 → NAS ✓ 18K
rsync soundcore AeroClip (input)_2026-05-12_08-58-41.mp4 → NAS ✓ 35K
rsync soundcore AeroClip (input)_2026-05-12_08-59-11.mp4 → NAS ✓ 35K
rsync soundcore AeroClip (input)_2026-05-12_08-59-41.mp4 → NAS ✓ 19K
rsync soundcore AeroClip (input)_2026-05-12_09-00-11.mp4 → NAS ✓ 19K
rsync soundcore AeroClip (input)_2026-05-12_09-00-41.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_09-01-11.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_09-01-41.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_09-02-11.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-03-07.mp4 → NAS ✓ 32K
rsync soundcore AeroClip (input)_2026-05-12_09-03-39.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-04-09.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_09-04-39.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-05-12.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_09-05-44.mp4 → NAS ✓ 28K
rsync soundcore AeroClip (input)_2026-05-12_09-06-14.mp4 → NAS ✓ 60K
rsync soundcore AeroClip (input)_2026-05-12_09-06-44.mp4 → NAS ✓ 43K
rsync soundcore AeroClip (input)_2026-05-12_09-07-14.mp4 → NAS ✓ 42K
rsync soundcore AeroClip (input)_2026-05-12_09-07-44.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_09-08-14.mp4 → NAS ✓ 26K
rsync soundcore AeroClip (input)_2026-05-12_09-08-44.mp4 → NAS ✓ 36K
rsync soundcore AeroClip (input)_2026-05-12_09-09-14.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-09-44.mp4 → NAS ✓ 7.0K
rsync soundcore AeroClip (input)_2026-05-12_09-10-14.mp4 → NAS ✓ 10K
rsync soundcore AeroClip (input)_2026-05-12_09-10-44.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_09-11-14.mp4 → NAS ✓ 7.0K
rsync soundcore AeroClip (input)_2026-05-12_09-11-44.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-12-14.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_09-12-43.mp4 → NAS ✓ 35K
rsync soundcore AeroClip (input)_2026-05-12_09-13-13.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_09-13-43.mp4 → NAS ✓ 40K
rsync soundcore AeroClip (input)_2026-05-12_09-14-13.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_09-14-43.mp4 → NAS ✓ 24K
rsync soundcore AeroClip (input)_2026-05-12_09-15-13.mp4 → NAS ✓ 29K
rsync soundcore AeroClip (input)_2026-05-12_09-15-43.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_09-16-13.mp4 → NAS ✓ 26K
rsync soundcore AeroClip (input)_2026-05-12_09-16-43.mp4 → NAS ✓ 24K
rsync soundcore AeroClip (input)_2026-05-12_09-17-13.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_09-17-43.mp4 → NAS ✓ 33K
rsync soundcore AeroClip (input)_2026-05-12_09-18-13.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_09-18-43.mp4 → NAS ✓ 30K
rsync soundcore AeroClip (input)_2026-05-12_09-19-12.mp4 → NAS ✓ 12K
rsync soundcore AeroClip (input)_2026-05-12_09-19-42.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_09-20-18.mp4 → NAS ✓ 12K
rsync soundcore AeroClip (input)_2026-05-12_09-20-50.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-21-20.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-21-59.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-22-31.mp4 → NAS ✓ 12K
rsync soundcore AeroClip (input)_2026-05-12_09-23-01.mp4 → NAS ✓ 28K
rsync soundcore AeroClip (input)_2026-05-12_09-24-02.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_09-24-34.mp4 → NAS ✓ 30K
rsync soundcore AeroClip (input)_2026-05-12_09-25-04.mp4 → NAS ✓ 53K
rsync soundcore AeroClip (input)_2026-05-12_09-25-34.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_09-26-04.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-26-34.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_09-27-04.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_09-27-34.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_09-28-04.mp4 → NAS ✓ 19K
rsync soundcore AeroClip (input)_2026-05-12_09-28-34.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_09-29-04.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_09-29-34.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_09-30-04.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_09-30-34.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_09-31-04.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_09-31-33.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-32-03.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-32-33.mp4 → NAS ✓ 55K
rsync soundcore AeroClip (input)_2026-05-12_09-33-03.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_09-33-33.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_09-34-03.mp4 → NAS ✓ 17K
rsync soundcore AeroClip (input)_2026-05-12_09-34-33.mp4 → NAS ✓ 63K
rsync soundcore AeroClip (input)_2026-05-12_09-35-03.mp4 → NAS ✓ 57K
rsync soundcore AeroClip (input)_2026-05-12_09-35-33.mp4 → NAS ✓ 64K
rsync soundcore AeroClip (input)_2026-05-12_09-36-03.mp4 → NAS ✓ 70K
rsync soundcore AeroClip (input)_2026-05-12_09-36-33.mp4 → NAS ✓ 56K
rsync soundcore AeroClip (input)_2026-05-12_09-37-03.mp4 → NAS ✓ 86K
rsync soundcore AeroClip (input)_2026-05-12_09-37-33.mp4 → NAS ✓ 66K
rsync soundcore AeroClip (input)_2026-05-12_09-38-03.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_09-38-33.mp4 → NAS ✓ 19K
rsync soundcore AeroClip (input)_2026-05-12_09-39-28.mp4 → NAS ✓ 34K
rsync soundcore AeroClip (input)_2026-05-12_09-40-00.mp4 → NAS ✓ 53K
rsync soundcore AeroClip (input)_2026-05-12_09-40-30.mp4 → NAS ✓ 50K
rsync MacBook Pro Microphone (input)_2026-05-12_09-41-30.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-42-02.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-42-32.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-43-02.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_09-43-32.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_09-44-02.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_09-44-32.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_09-45-02.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-45-32.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-12_09-46-02.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-46-32.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-47-01.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-47-31.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-48-01.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-48-31.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-49-01.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_09-49-31.mp4 → NAS ✓ 197K
rsync MacBook Pro Microphone (input)_2026-05-12_09-50-01.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_09-50-31.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_09-51-01.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_09-51-31.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-52-01.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-52-31.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-53-00.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-53-30.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-54-00.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-54-30.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-55-00.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-55-30.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-01-32.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-12_10-02-01.mp4 → NAS ✓ 221K
rsync MacBook Pro Microphone (input)_2026-05-12_10-02-30.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-12_10-03-00.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-12_10-03-29.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-03-59.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-04-29.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-04-59.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-05-29.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-05-59.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-06-29.mp4 → NAS ✓ 197K
rsync MacBook Pro Microphone (input)_2026-05-12_10-06-59.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_10-07-29.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_10-07-59.mp4 → NAS ✓ 198K
rsync MacBook Pro Microphone (input)_2026-05-12_10-08-28.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_10-08-58.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-09-28.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_10-09-58.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-10-28.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_10-10-58.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-11-28.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-11-58.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-12-28.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-12-58.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-13-28.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-13-58.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-14-28.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-14-58.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-15-28.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-15-57.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-16-27.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-16-57.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-17-27.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-17-57.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-18-27.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-18-57.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-19-27.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-19-57.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-28-53.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-29-24.mp4 → NAS ✓ 215K
rsync MacBook Pro Microphone (input)_2026-05-12_10-29-53.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-12_10-30-23.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-30-53.mp4 → NAS ✓ 218K
rsync MacBook Pro Microphone (input)_2026-05-12_10-31-23.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-31-53.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-32-23.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-32-53.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-33-23.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-33-53.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-34-22.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_10-34-52.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_10-35-22.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_10-35-52.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-36-22.mp4 → NAS ✓ 226K
rsync MacBook Pro Microphone (input)_2026-05-12_10-36-52.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-37-22.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-37-52.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-38-22.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-38-52.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-39-22.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-39-51.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-12_10-40-21.mp4 → NAS ✓ 218K
rsync MacBook Pro Microphone (input)_2026-05-12_10-40-51.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-12_10-41-21.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-41-51.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-42-21.mp4 → NAS ✓ 219K
rsync MacBook Pro Microphone (input)_2026-05-12_10-42-51.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-43-21.mp4 → NAS ✓ 223K
rsync MacBook Pro Microphone (input)_2026-05-12_10-43-50.mp4 → NAS ✓ 233K
rsync MacBook Pro Microphone (input)_2026-05-12_10-44-20.mp4 → NAS ✓ 222K
rsync MacBook Pro Microphone (input)_2026-05-12_10-44-50.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-45-20.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-45-50.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-12_10-46-20.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-12_10-46-50.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-47-19.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-12_10-47-49.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-48-19.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-48-49.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-49-19.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-49-49.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-50-19.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-50-49.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-51-19.mp4 → NAS ✓ 198K
rsync MacBook Pro Microphone (input)_2026-05-12_10-51-49.mp4 → NAS ✓ 198K
rsync MacBook Pro Microphone (input)_2026-05-12_10-52-19.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-52-49.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-53-19.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-53-48.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-54-18.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_10-54-48.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_10-55-18.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_10-55-48.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-56-18.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-56-48.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_10-57-18.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-57-48.mp4 → NAS ✓ 198K
rsync MacBook Pro Microphone (input)_2026-05-12_10-58-18.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-58-48.mp4 → NAS ✓ 208K
...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"rsync System Audio (output)_2026-05-12_06-55-21.mp4 → NAS ✓ 249K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-55-44.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_06-55-50.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-56-14.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-12_06-56-19.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-56-44.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-12_06-56-49.mp4 → NAS ✓ 247K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-57-14.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_06-57-17.mp4 → NAS ✓ 241K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-57-44.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_06-57-46.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-58-14.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_06-58-44.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-58-44.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_06-59-13.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-59-13.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_06-59-43.mp4 → NAS ✓ 241K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-59-43.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-12_07-00-12.mp4 → NAS ✓ 258K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-00-13.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_07-00-41.mp4 → NAS ✓ 253K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-00-43.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_07-01-09.mp4 → NAS ✓ 257K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-01-13.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_07-01-37.mp4 → NAS ✓ 252K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-01-42.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_07-02-06.mp4 → NAS ✓ 252K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-02-12.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_07-02-36.mp4 → NAS ✓ 251K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-02-42.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_07-03-04.mp4 → NAS ✓ 257K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-03-12.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_07-03-31.mp4 → NAS ✓ 264K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-03-42.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_07-04-00.mp4 → NAS ✓ 253K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-04-12.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_07-04-29.mp4 → NAS ✓ 236K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-04-42.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_07-04-59.mp4 → NAS ✓ 253K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-05-11.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_07-05-27.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-05-41.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_07-05-57.mp4 → NAS ✓ 244K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-06-11.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_07-06-26.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-06-41.mp4 → NAS ✓ 199K\n rsync System Audio (output)_2026-05-12_07-06-56.mp4 → NAS ✓ 247K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-07-11.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_07-07-24.mp4 → NAS ✓ 235K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-07-40.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_07-07-51.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-08-10.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-12_07-08-20.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-08-40.mp4 → NAS ✓ 225K\n rsync System Audio (output)_2026-05-12_07-08-47.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-09-10.mp4 → NAS ✓ 223K\n rsync System Audio (output)_2026-05-12_07-09-17.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-09-40.mp4 → NAS ✓ 223K\n rsync System Audio (output)_2026-05-12_07-09-45.mp4 → NAS ✓ 249K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-10-09.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_07-10-13.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-10-39.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-12_07-10-42.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-11-09.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_07-11-11.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-11-39.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-12_07-12-09.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-12-09.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_07-12-38.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-12-39.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_07-13-08.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-13-09.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_07-13-38.mp4 → NAS ✓ 106K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-13-39.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-12_07-14-07.mp4 → NAS ✓ 14K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-14-08.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_07-14-36.mp4 → NAS ✓ 44K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-14-38.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-12_07-15-06.mp4 → NAS ✓ 5.0K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-15-08.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_07-15-35.mp4 → NAS ✓ 5.0K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-15-38.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-12_07-16-05.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_07-16-29.mp4 → NAS ✓ 43K\n rsync MacBook Pro Microphone (input)_2026-05-12_07-16-37.mp4 → NAS ✓ 16K\n rsync System Audio (output)_2026-05-12_07-16-35.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-16-47.mp4 → NAS ✓ 10K\n rsync System Audio (output)_2026-05-12_07-17-05.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-17-19.mp4 → NAS ✓ 27K\n rsync System Audio (output)_2026-05-12_07-17-34.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-17-49.mp4 → NAS ✓ 56K\n rsync System Audio (output)_2026-05-12_07-18-04.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-18-19.mp4 → NAS ✓ 66K\n rsync System Audio (output)_2026-05-12_07-18-34.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-18-49.mp4 → NAS ✓ 137K\n rsync System Audio (output)_2026-05-12_07-19-04.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-19-19.mp4 → NAS ✓ 148K\n rsync System Audio (output)_2026-05-12_07-19-33.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-19-49.mp4 → NAS ✓ 93K\n rsync System Audio (output)_2026-05-12_07-20-03.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-20-19.mp4 → NAS ✓ 110K\n rsync System Audio (output)_2026-05-12_07-20-33.mp4 → NAS ✓ 83K\n rsync soundcore AeroClip (input)_2026-05-12_07-20-49.mp4 → NAS ✓ 182K\n rsync System Audio (output)_2026-05-12_07-21-03.mp4 → NAS ✓ 47K\n rsync soundcore AeroClip (input)_2026-05-12_07-21-19.mp4 → NAS ✓ 128K\n rsync System Audio (output)_2026-05-12_07-21-33.mp4 → NAS ✓ 223K\n rsync soundcore AeroClip (input)_2026-05-12_07-21-49.mp4 → NAS ✓ 68K\n rsync System Audio (output)_2026-05-12_07-22-02.mp4 → NAS ✓ 90K\n rsync soundcore AeroClip (input)_2026-05-12_07-22-19.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-22-32.mp4 → NAS ✓ 30K\n rsync soundcore AeroClip (input)_2026-05-12_07-22-49.mp4 → NAS ✓ 19K\n rsync System Audio (output)_2026-05-12_07-23-02.mp4 → NAS ✓ 210K\n rsync soundcore AeroClip (input)_2026-05-12_07-23-19.mp4 → NAS ✓ 27K\n rsync System Audio (output)_2026-05-12_07-23-32.mp4 → NAS ✓ 84K\n rsync soundcore AeroClip (input)_2026-05-12_07-23-49.mp4 → NAS ✓ 22K\n rsync System Audio (output)_2026-05-12_07-24-02.mp4 → NAS ✓ 209K\n rsync soundcore AeroClip (input)_2026-05-12_07-24-19.mp4 → NAS ✓ 33K\n rsync System Audio (output)_2026-05-12_07-24-32.mp4 → NAS ✓ 103K\n rsync soundcore AeroClip (input)_2026-05-12_07-24-49.mp4 → NAS ✓ 55K\n rsync System Audio (output)_2026-05-12_07-25-01.mp4 → NAS ✓ 139K\n rsync soundcore AeroClip (input)_2026-05-12_07-25-19.mp4 → NAS ✓ 20K\n rsync System Audio (output)_2026-05-12_07-25-31.mp4 → NAS ✓ 135K\n rsync soundcore AeroClip (input)_2026-05-12_07-25-49.mp4 → NAS ✓ 13K\n rsync System Audio (output)_2026-05-12_07-26-01.mp4 → NAS ✓ 174K\n rsync soundcore AeroClip (input)_2026-05-12_07-26-19.mp4 → NAS ✓ 14K\n rsync System Audio (output)_2026-05-12_07-26-31.mp4 → NAS ✓ 170K\n rsync soundcore AeroClip (input)_2026-05-12_07-26-49.mp4 → NAS ✓ 29K\n rsync System Audio (output)_2026-05-12_07-27-01.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_07-27-19.mp4 → NAS ✓ 23K\n rsync System Audio (output)_2026-05-12_07-27-31.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-27-49.mp4 → NAS ✓ 44K\n rsync System Audio (output)_2026-05-12_07-28-01.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-28-19.mp4 → NAS ✓ 24K\n rsync System Audio (output)_2026-05-12_07-28-31.mp4 → NAS ✓ 42K\n rsync soundcore AeroClip (input)_2026-05-12_07-28-49.mp4 → NAS ✓ 35K\n rsync System Audio (output)_2026-05-12_07-29-00.mp4 → NAS ✓ 63K\n rsync soundcore AeroClip (input)_2026-05-12_07-29-19.mp4 → NAS ✓ 24K\n rsync System Audio (output)_2026-05-12_07-29-30.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-29-49.mp4 → NAS ✓ 18K\n rsync System Audio (output)_2026-05-12_07-30-00.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-30-19.mp4 → NAS ✓ 42K\n rsync System Audio (output)_2026-05-12_07-30-30.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-30-49.mp4 → NAS ✓ 36K\n rsync System Audio (output)_2026-05-12_07-31-00.mp4 → NAS ✓ 62K\n rsync soundcore AeroClip (input)_2026-05-12_07-31-19.mp4 → NAS ✓ 21K\n rsync System Audio (output)_2026-05-12_07-31-30.mp4 → NAS ✓ 134K\n rsync soundcore AeroClip (input)_2026-05-12_07-31-49.mp4 → NAS ✓ 18K\n rsync System Audio (output)_2026-05-12_07-31-59.mp4 → NAS ✓ 164K\n rsync soundcore AeroClip (input)_2026-05-12_07-32-19.mp4 → NAS ✓ 41K\n rsync System Audio (output)_2026-05-12_07-32-29.mp4 → NAS ✓ 28K\n rsync soundcore AeroClip (input)_2026-05-12_07-32-49.mp4 → NAS ✓ 36K\n rsync System Audio (output)_2026-05-12_07-32-59.mp4 → NAS ✓ 33K\n rsync soundcore AeroClip (input)_2026-05-12_07-33-18.mp4 → NAS ✓ 19K\n rsync System Audio (output)_2026-05-12_07-33-29.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-33-48.mp4 → NAS ✓ 79K\n rsync System Audio (output)_2026-05-12_07-33-58.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-34-18.mp4 → NAS ✓ 82K\n rsync System Audio (output)_2026-05-12_07-34-28.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-34-48.mp4 → NAS ✓ 91K\n rsync System Audio (output)_2026-05-12_07-34-58.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-35-18.mp4 → NAS ✓ 71K\n rsync System Audio (output)_2026-05-12_07-35-28.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-35-48.mp4 → NAS ✓ 45K\n rsync System Audio (output)_2026-05-12_07-35-58.mp4 → NAS ✓ 158K\n rsync soundcore AeroClip (input)_2026-05-12_07-36-18.mp4 → NAS ✓ 23K\n rsync System Audio (output)_2026-05-12_07-36-27.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-36-48.mp4 → NAS ✓ 22K\n rsync System Audio (output)_2026-05-12_07-36-57.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-37-18.mp4 → NAS ✓ 33K\n rsync System Audio (output)_2026-05-12_07-37-27.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-37-48.mp4 → NAS ✓ 19K\n rsync System Audio (output)_2026-05-12_07-37-57.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-38-18.mp4 → NAS ✓ 17K\n rsync System Audio (output)_2026-05-12_07-38-26.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-38-48.mp4 → NAS ✓ 40K\n rsync System Audio (output)_2026-05-12_07-38-56.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-39-18.mp4 → NAS ✓ 25K\n rsync System Audio (output)_2026-05-12_07-39-26.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-39-48.mp4 → NAS ✓ 32K\n rsync System Audio (output)_2026-05-12_07-39-55.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-40-18.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-40-25.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 → NAS ✓ 14K\n rsync System Audio (output)_2026-05-12_07-40-55.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-41-18.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-41-24.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-41-48.mp4 → NAS ✓ 28K\n rsync System Audio (output)_2026-05-12_07-41-54.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-42-18.mp4 → NAS ✓ 45K\n rsync System Audio (output)_2026-05-12_07-42-24.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-42-48.mp4 → NAS ✓ 67K\n rsync System Audio (output)_2026-05-12_07-42-54.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-43-18.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-43-23.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-43-47.mp4 → NAS ✓ 16K\n rsync System Audio (output)_2026-05-12_07-43-53.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_07-44-23.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-44-47.mp4 → NAS ✓ 9.0K\n rsync System Audio (output)_2026-05-12_07-44-53.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-45-19.mp4 → NAS ✓ 37K\n rsync System Audio (output)_2026-05-12_07-45-22.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-45-49.mp4 → NAS ✓ 23K\n rsync System Audio (output)_2026-05-12_07-45-51.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-46-19.mp4 → NAS ✓ 7.0K\n rsync System Audio (output)_2026-05-12_07-46-21.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_07-46-51.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_07-47-21.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-47-19.mp4 → NAS ✓ 7.0K\n rsync System Audio (output)_2026-05-12_07-47-51.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-47-51.mp4 → NAS ✓ 16K\n rsync System Audio (output)_2026-05-12_07-48-21.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-48-21.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-48-50.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-48-51.mp4 → NAS ✓ 14K\n rsync System Audio (output)_2026-05-12_07-49-20.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-49-21.mp4 → NAS ✓ 11K\n rsync System Audio (output)_2026-05-12_07-49-50.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-49-51.mp4 → NAS ✓ 6.0K\n rsync System Audio (output)_2026-05-12_07-50-20.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-50-27.mp4 → NAS ✓ 25K\n rsync System Audio (output)_2026-05-12_07-50-50.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-50-59.mp4 → NAS ✓ 10K\n rsync System Audio (output)_2026-05-12_07-51-19.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-51-29.mp4 → NAS ✓ 12K\n rsync System Audio (output)_2026-05-12_07-51-48.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-51-59.mp4 → NAS ✓ 17K\n rsync System Audio (output)_2026-05-12_07-52-18.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-52-29.mp4 → NAS ✓ 17K\n rsync System Audio (output)_2026-05-12_07-52-48.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-52-59.mp4 → NAS ✓ 13K\n rsync System Audio (output)_2026-05-12_07-53-18.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-53-29.mp4 → NAS ✓ 18K\n rsync System Audio (output)_2026-05-12_07-53-48.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-53-59.mp4 → NAS ✓ 9.0K\n rsync System Audio (output)_2026-05-12_07-54-17.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-54-29.mp4 → NAS ✓ 7.0K\n rsync System Audio (output)_2026-05-12_07-54-47.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-54-59.mp4 → NAS ✓ 12K\n rsync System Audio (output)_2026-05-12_07-55-17.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-55-29.mp4 → NAS ✓ 38K\n rsync System Audio (output)_2026-05-12_07-55-47.mp4 → NAS ✓ 170K\n rsync soundcore AeroClip (input)_2026-05-12_07-55-58.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-12_07-56-16.mp4 → NAS ✓ 194K\n rsync soundcore AeroClip (input)_2026-05-12_07-56-28.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_07-56-45.mp4 → NAS ✓ 196K\n rsync soundcore AeroClip (input)_2026-05-12_07-56-58.mp4 → NAS ✓ 159K\n rsync System Audio (output)_2026-05-12_07-57-15.mp4 → NAS ✓ 230K\n rsync soundcore AeroClip (input)_2026-05-12_07-57-28.mp4 → NAS ✓ 107K\n rsync System Audio (output)_2026-05-12_07-57-44.mp4 → NAS ✓ 238K\n rsync soundcore AeroClip (input)_2026-05-12_07-57-58.mp4 → NAS ✓ 94K\n rsync System Audio (output)_2026-05-12_07-58-14.mp4 → NAS ✓ 229K\n rsync soundcore AeroClip (input)_2026-05-12_07-58-28.mp4 → NAS ✓ 107K\n rsync System Audio (output)_2026-05-12_07-58-44.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_07-58-58.mp4 → NAS ✓ 84K\n rsync System Audio (output)_2026-05-12_07-59-13.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-59-27.mp4 → NAS ✓ 52K\n rsync System Audio (output)_2026-05-12_07-59-43.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-59-57.mp4 → NAS ✓ 65K\n rsync System Audio (output)_2026-05-12_08-00-13.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-00-27.mp4 → NAS ✓ 170K\n rsync System Audio (output)_2026-05-12_08-00-43.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-00-57.mp4 → NAS ✓ 163K\n rsync System Audio (output)_2026-05-12_08-01-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-01-27.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-12_08-01-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-01-57.mp4 → NAS ✓ 219K\n rsync System Audio (output)_2026-05-12_08-02-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-02-27.mp4 → NAS ✓ 161K\n rsync System Audio (output)_2026-05-12_08-02-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-02-57.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-12_08-03-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-03-28.mp4 → NAS ✓ 124K\n rsync System Audio (output)_2026-05-12_08-03-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-03-58.mp4 → NAS ✓ 181K\n rsync System Audio (output)_2026-05-12_08-04-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-04-27.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-12_08-04-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-04-57.mp4 → NAS ✓ 247K\n rsync System Audio (output)_2026-05-12_08-05-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-05-27.mp4 → NAS ✓ 239K\n rsync System Audio (output)_2026-05-12_08-05-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-05-57.mp4 → NAS ✓ 250K\n rsync System Audio (output)_2026-05-12_08-06-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-06-27.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-12_08-06-41.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-06-57.mp4 → NAS ✓ 247K\n rsync System Audio (output)_2026-05-12_08-07-11.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-07-27.mp4 → NAS ✓ 238K\n rsync System Audio (output)_2026-05-12_08-07-41.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-07-57.mp4 → NAS ✓ 136K\n rsync System Audio (output)_2026-05-12_08-08-11.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-08-27.mp4 → NAS ✓ 177K\n rsync System Audio (output)_2026-05-12_08-08-41.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-08-57.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-12_08-09-11.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-09-27.mp4 → NAS ✓ 219K\n rsync soundcore AeroClip (input)_2026-05-12_08-09-57.mp4 → NAS ✓ 245K\n rsync soundcore AeroClip (input)_2026-05-12_08-12-10.mp4 → NAS ✓ 58K\n rsync soundcore AeroClip (input)_2026-05-12_08-12-42.mp4 → NAS ✓ 117K\n rsync soundcore AeroClip (input)_2026-05-12_08-13-12.mp4 → NAS ✓ 67K\n rsync soundcore AeroClip (input)_2026-05-12_08-13-42.mp4 → NAS ✓ 64K\n rsync soundcore AeroClip (input)_2026-05-12_08-14-12.mp4 → NAS ✓ 92K\n rsync soundcore AeroClip (input)_2026-05-12_08-14-42.mp4 → NAS ✓ 60K\n rsync soundcore AeroClip (input)_2026-05-12_08-15-12.mp4 → NAS ✓ 64K\n rsync soundcore AeroClip (input)_2026-05-12_08-15-42.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_08-16-12.mp4 → NAS ✓ 17K\n rsync soundcore AeroClip (input)_2026-05-12_08-16-42.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_08-17-12.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_08-17-42.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-18-12.mp4 → NAS ✓ 7.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-19-13.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-19-45.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_08-20-15.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_08-20-45.mp4 → NAS ✓ 14K\n rsync soundcore AeroClip (input)_2026-05-12_08-21-15.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-21-45.mp4 → NAS ✓ 18K\n rsync soundcore AeroClip (input)_2026-05-12_08-22-15.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-22-45.mp4 → NAS ✓ 17K\n rsync soundcore AeroClip (input)_2026-05-12_08-23-15.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_08-23-45.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-24-15.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_08-24-45.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_08-25-15.mp4 → NAS ✓ 28K\n rsync soundcore AeroClip (input)_2026-05-12_08-25-45.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_08-26-28.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_08-27-00.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_08-27-30.mp4 → NAS ✓ 38K\n rsync soundcore AeroClip (input)_2026-05-12_08-28-00.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_08-28-30.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_08-29-00.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_08-29-30.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_08-30-00.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_08-30-30.mp4 → NAS ✓ 29K\n rsync soundcore AeroClip (input)_2026-05-12_08-31-00.mp4 → NAS ✓ 60K\n rsync soundcore AeroClip (input)_2026-05-12_08-31-30.mp4 → NAS ✓ 124K\n rsync soundcore AeroClip (input)_2026-05-12_08-32-00.mp4 → NAS ✓ 73K\n rsync soundcore AeroClip (input)_2026-05-12_08-32-30.mp4 → NAS ✓ 39K\n rsync soundcore AeroClip (input)_2026-05-12_08-32-59.mp4 → NAS ✓ 52K\n rsync soundcore AeroClip (input)_2026-05-12_08-33-29.mp4 → NAS ✓ 127K\n rsync soundcore AeroClip (input)_2026-05-12_08-33-59.mp4 → NAS ✓ 139K\n rsync soundcore AeroClip (input)_2026-05-12_08-34-29.mp4 → NAS ✓ 169K\n rsync soundcore AeroClip (input)_2026-05-12_08-34-59.mp4 → NAS ✓ 85K\n rsync soundcore AeroClip (input)_2026-05-12_08-35-29.mp4 → NAS ✓ 30K\n rsync soundcore AeroClip (input)_2026-05-12_08-35-59.mp4 → NAS ✓ 34K\n rsync soundcore AeroClip (input)_2026-05-12_08-36-29.mp4 → NAS ✓ 47K\n rsync soundcore AeroClip (input)_2026-05-12_08-37-10.mp4 → NAS ✓ 10K\n rsync soundcore AeroClip (input)_2026-05-12_08-37-42.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-38-12.mp4 → NAS ✓ 123K\n rsync soundcore AeroClip (input)_2026-05-12_08-38-42.mp4 → NAS ✓ 164K\n rsync soundcore AeroClip (input)_2026-05-12_08-39-12.mp4 → NAS ✓ 179K\n rsync soundcore AeroClip (input)_2026-05-12_08-39-42.mp4 → NAS ✓ 176K\n rsync soundcore AeroClip (input)_2026-05-12_08-40-12.mp4 → NAS ✓ 173K\n rsync soundcore AeroClip (input)_2026-05-12_08-40-42.mp4 → NAS ✓ 157K\n rsync soundcore AeroClip (input)_2026-05-12_08-41-12.mp4 → NAS ✓ 101K\n rsync soundcore AeroClip (input)_2026-05-12_08-41-42.mp4 → NAS ✓ 119K\n rsync soundcore AeroClip (input)_2026-05-12_08-42-12.mp4 → NAS ✓ 79K\n rsync soundcore AeroClip (input)_2026-05-12_08-42-42.mp4 → NAS ✓ 14K\n rsync soundcore AeroClip (input)_2026-05-12_08-43-12.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_08-43-42.mp4 → NAS ✓ 25K\n rsync soundcore AeroClip (input)_2026-05-12_08-44-12.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-44-42.mp4 → NAS ✓ 105K\n rsync soundcore AeroClip (input)_2026-05-12_08-45-12.mp4 → NAS ✓ 160K\n rsync soundcore AeroClip (input)_2026-05-12_08-45-41.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_08-46-11.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_08-46-41.mp4 → NAS ✓ 12K\n rsync soundcore AeroClip (input)_2026-05-12_08-47-11.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-47-41.mp4 → NAS ✓ 47K\n rsync soundcore AeroClip (input)_2026-05-12_08-48-11.mp4 → NAS ✓ 83K\n rsync soundcore AeroClip (input)_2026-05-12_08-48-41.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_08-49-11.mp4 → NAS ✓ 40K\n rsync soundcore AeroClip (input)_2026-05-12_08-49-41.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_08-50-11.mp4 → NAS ✓ 17K\n rsync soundcore AeroClip (input)_2026-05-12_08-50-41.mp4 → NAS ✓ 125K\n rsync soundcore AeroClip (input)_2026-05-12_08-51-11.mp4 → NAS ✓ 69K\n rsync soundcore AeroClip (input)_2026-05-12_08-51-41.mp4 → NAS ✓ 67K\n rsync soundcore AeroClip (input)_2026-05-12_08-52-11.mp4 → NAS ✓ 57K\n rsync soundcore AeroClip (input)_2026-05-12_08-52-41.mp4 → NAS ✓ 38K\n rsync soundcore AeroClip (input)_2026-05-12_08-53-11.mp4 → NAS ✓ 29K\n rsync soundcore AeroClip (input)_2026-05-12_08-53-41.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_08-54-11.mp4 → NAS ✓ 29K\n rsync soundcore AeroClip (input)_2026-05-12_08-54-41.mp4 → NAS ✓ 14K\n rsync soundcore AeroClip (input)_2026-05-12_08-55-11.mp4 → NAS ✓ 39K\n rsync soundcore AeroClip (input)_2026-05-12_08-55-41.mp4 → NAS ✓ 25K\n rsync soundcore AeroClip (input)_2026-05-12_08-56-11.mp4 → NAS ✓ 31K\n rsync soundcore AeroClip (input)_2026-05-12_08-56-41.mp4 → NAS ✓ 24K\n rsync soundcore AeroClip (input)_2026-05-12_08-57-11.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_08-57-41.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_08-58-11.mp4 → NAS ✓ 18K\n rsync soundcore AeroClip (input)_2026-05-12_08-58-41.mp4 → NAS ✓ 35K\n rsync soundcore AeroClip (input)_2026-05-12_08-59-11.mp4 → NAS ✓ 35K\n rsync soundcore AeroClip (input)_2026-05-12_08-59-41.mp4 → NAS ✓ 19K\n rsync soundcore AeroClip (input)_2026-05-12_09-00-11.mp4 → NAS ✓ 19K\n rsync soundcore AeroClip (input)_2026-05-12_09-00-41.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_09-01-11.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_09-01-41.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_09-02-11.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-03-07.mp4 → NAS ✓ 32K\n rsync soundcore AeroClip (input)_2026-05-12_09-03-39.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-04-09.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_09-04-39.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-05-12.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_09-05-44.mp4 → NAS ✓ 28K\n rsync soundcore AeroClip (input)_2026-05-12_09-06-14.mp4 → NAS ✓ 60K\n rsync soundcore AeroClip (input)_2026-05-12_09-06-44.mp4 → NAS ✓ 43K\n rsync soundcore AeroClip (input)_2026-05-12_09-07-14.mp4 → NAS ✓ 42K\n rsync soundcore AeroClip (input)_2026-05-12_09-07-44.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_09-08-14.mp4 → NAS ✓ 26K\n rsync soundcore AeroClip (input)_2026-05-12_09-08-44.mp4 → NAS ✓ 36K\n rsync soundcore AeroClip (input)_2026-05-12_09-09-14.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-09-44.mp4 → NAS ✓ 7.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-10-14.mp4 → NAS ✓ 10K\n rsync soundcore AeroClip (input)_2026-05-12_09-10-44.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-11-14.mp4 → NAS ✓ 7.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-11-44.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-12-14.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_09-12-43.mp4 → NAS ✓ 35K\n rsync soundcore AeroClip (input)_2026-05-12_09-13-13.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_09-13-43.mp4 → NAS ✓ 40K\n rsync soundcore AeroClip (input)_2026-05-12_09-14-13.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-14-43.mp4 → NAS ✓ 24K\n rsync soundcore AeroClip (input)_2026-05-12_09-15-13.mp4 → NAS ✓ 29K\n rsync soundcore AeroClip (input)_2026-05-12_09-15-43.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-16-13.mp4 → NAS ✓ 26K\n rsync soundcore AeroClip (input)_2026-05-12_09-16-43.mp4 → NAS ✓ 24K\n rsync soundcore AeroClip (input)_2026-05-12_09-17-13.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_09-17-43.mp4 → NAS ✓ 33K\n rsync soundcore AeroClip (input)_2026-05-12_09-18-13.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_09-18-43.mp4 → NAS ✓ 30K\n rsync soundcore AeroClip (input)_2026-05-12_09-19-12.mp4 → NAS ✓ 12K\n rsync soundcore AeroClip (input)_2026-05-12_09-19-42.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-20-18.mp4 → NAS ✓ 12K\n rsync soundcore AeroClip (input)_2026-05-12_09-20-50.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-21-20.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-21-59.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-22-31.mp4 → NAS ✓ 12K\n rsync soundcore AeroClip (input)_2026-05-12_09-23-01.mp4 → NAS ✓ 28K\n rsync soundcore AeroClip (input)_2026-05-12_09-24-02.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-24-34.mp4 → NAS ✓ 30K\n rsync soundcore AeroClip (input)_2026-05-12_09-25-04.mp4 → NAS ✓ 53K\n rsync soundcore AeroClip (input)_2026-05-12_09-25-34.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_09-26-04.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-26-34.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_09-27-04.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_09-27-34.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_09-28-04.mp4 → NAS ✓ 19K\n rsync soundcore AeroClip (input)_2026-05-12_09-28-34.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_09-29-04.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_09-29-34.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_09-30-04.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_09-30-34.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_09-31-04.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_09-31-33.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-32-03.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-32-33.mp4 → NAS ✓ 55K\n rsync soundcore AeroClip (input)_2026-05-12_09-33-03.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_09-33-33.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_09-34-03.mp4 → NAS ✓ 17K\n rsync soundcore AeroClip (input)_2026-05-12_09-34-33.mp4 → NAS ✓ 63K\n rsync soundcore AeroClip (input)_2026-05-12_09-35-03.mp4 → NAS ✓ 57K\n rsync soundcore AeroClip (input)_2026-05-12_09-35-33.mp4 → NAS ✓ 64K\n rsync soundcore AeroClip (input)_2026-05-12_09-36-03.mp4 → NAS ✓ 70K\n rsync soundcore AeroClip (input)_2026-05-12_09-36-33.mp4 → NAS ✓ 56K\n rsync soundcore AeroClip (input)_2026-05-12_09-37-03.mp4 → NAS ✓ 86K\n rsync soundcore AeroClip (input)_2026-05-12_09-37-33.mp4 → NAS ✓ 66K\n rsync soundcore AeroClip (input)_2026-05-12_09-38-03.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_09-38-33.mp4 → NAS ✓ 19K\n rsync soundcore AeroClip (input)_2026-05-12_09-39-28.mp4 → NAS ✓ 34K\n rsync soundcore AeroClip (input)_2026-05-12_09-40-00.mp4 → NAS ✓ 53K\n rsync soundcore AeroClip (input)_2026-05-12_09-40-30.mp4 → NAS ✓ 50K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-41-30.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-42-02.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-42-32.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-43-02.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-43-32.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-44-02.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-44-32.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-45-02.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-45-32.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-46-02.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-46-32.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-47-01.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-47-31.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-48-01.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-48-31.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-49-01.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-49-31.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-50-01.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-50-31.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-51-01.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-51-31.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-52-01.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-52-31.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-53-00.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-53-30.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-54-00.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-54-30.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-55-00.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-55-30.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-01-32.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-02-01.mp4 → NAS ✓ 221K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-02-30.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-03-00.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-03-29.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-03-59.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-04-29.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-04-59.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-05-29.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-05-59.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-06-29.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-06-59.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-07-29.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-07-59.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-08-28.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-08-58.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-09-28.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-09-58.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-10-28.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-10-58.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-11-28.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-11-58.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-12-28.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-12-58.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-13-28.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-13-58.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-14-28.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-14-58.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-15-28.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-15-57.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-16-27.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-16-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-17-27.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-17-57.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-18-27.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-18-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-19-27.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-19-57.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-28-53.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-29-24.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-29-53.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-30-23.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-30-53.mp4 → NAS ✓ 218K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-31-23.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-31-53.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-32-23.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-32-53.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-33-23.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-33-53.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-34-22.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-34-52.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-35-22.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-35-52.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-36-22.mp4 → NAS ✓ 226K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-36-52.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-37-22.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-37-52.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-38-22.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-38-52.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-39-22.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-39-51.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-40-21.mp4 → NAS ✓ 218K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-40-51.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-41-21.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-41-51.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-42-21.mp4 → NAS ✓ 219K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-42-51.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-43-21.mp4 → NAS ✓ 223K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-43-50.mp4 → NAS ✓ 233K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-44-20.mp4 → NAS ✓ 222K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-44-50.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-45-20.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-45-50.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-46-20.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-46-50.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-47-19.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-47-49.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-48-19.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-48-49.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-49-19.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-49-49.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-50-19.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-50-49.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-51-19.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-51-49.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-52-19.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-52-49.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-53-19.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-53-48.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-54-18.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-54-48.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-55-18.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-55-48.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-56-18.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-56-48.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-57-18.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-57-48.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-58-18.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-58-48.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-59-18.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-59-47.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-00-17.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-00-47.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-01-17.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-01-47.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-02-17.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-02-47.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-03-17.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-03-47.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-04-17.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-04-47.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-05-17.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-05-46.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-06-16.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-06-46.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-07-16.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-07-46.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-08-16.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-08-46.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-09-16.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-09-46.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-10-16.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-10-46.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-11-16.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-11-46.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-12-15.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-12-45.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-13-15.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-13-45.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-14-15.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-14-45.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-15-15.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-15-45.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-16-15.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-16-45.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-17-14.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-17-44.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-18-14.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-18-44.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-19-14.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-19-44.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-20-14.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-20-44.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-21-14.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-21-44.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-22-14.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-22-44.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-23-14.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-23-44.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-24-14.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-24-43.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-25-13.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-25-43.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-26-13.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-26-43.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-27-13.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-27-43.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-28-13.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-28-43.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-29-12.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-29-42.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-30-12.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-30-42.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-31-11.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-31-41.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-32-11.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-32-41.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-33-10.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-33-40.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-34-10.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-34-40.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-35-10.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-35-40.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-36-09.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-36-39.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-37-09.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-37-39.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-38-09.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-38-39.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-39-09.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-39-39.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-40-09.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-40-39.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-41-09.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-41-39.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-42-09.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-42-38.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-43-08.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-43-38.mp4 → NAS ✓ 219K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-44-08.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-44-37.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-45-07.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-45-36.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-46-05.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-46-35.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-47-05.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-47-34.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-48-03.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-48-33.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-49-03.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-49-33.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-50-03.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-50-33.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-51-02.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-51-32.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-52-01.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-52-31.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-53-01.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-53-30.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-54-00.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-54-30.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-55-00.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-55-29.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-55-59.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-56-29.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-56-59.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-57-29.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-57-59.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-58-28.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-58-58.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-59-28.mp4 → NAS ✓ 218K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-59-58.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-00-27.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-00-57.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-01-27.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-01-57.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-02-27.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-02-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-03-27.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-03-57.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-04-27.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-04-57.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-05-26.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-05-56.mp4 → NAS ✓ 226K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-06-26.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-06-56.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-07-26.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-07-56.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-08-26.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-08-55.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-09-25.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-09-55.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-10-25.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-10-55.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-11-25.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-11-55.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-12-24.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-12-54.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-13-24.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-13-53.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-14-23.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-14-53.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-15-23.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-15-53.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-16-23.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-16-53.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-17-53.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-18-22.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-18-52.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-19-22.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-19-52.mp4 → NAS ✓ 227K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-20-21.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-20-51.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-21-21.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-21-51.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-22-21.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-22-51.mp4 → NAS ✓ 242K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-59-11.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-59-41.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_13-00-11.mp4 → NAS ✓ 194K\n rsync MacBook Pro Microphone (input)_2026-05-12_13-35-39.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-08-11.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-10-40.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-15-09.mp4 → NAS ✓ 198K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-21-38.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-22-38.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-21-56.mp4 → NAS ✓ 195K\n rsync System Audio (output)_2026-05-12_17-21-56.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_17-22-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-22-28.mp4 → NAS ✓ 195K\n rsync System Audio (output)_2026-05-12_17-22-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-22-58.mp4 → NAS ✓ 196K\n rsync System Audio (output)_2026-05-12_17-23-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-23-28.mp4 → NAS ✓ 200K\n rsync System Audio (output)_2026-05-12_17-23-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-23-58.mp4 → NAS ✓ 196K\n rsync System Audio (output)_2026-05-12_17-24-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-24-28.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-24-58.mp4 → NAS ✓ 199K\n rsync System Audio (output)_2026-05-12_17-24-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-25-28.mp4 → NAS ✓ 195K\n rsync System Audio (output)_2026-05-12_17-25-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-25-58.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_17-25-58.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_17-26-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-26-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-26-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-26-58.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_17-27-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-27-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-27-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-27-58.mp4 → NAS ✓ 194K\n rsync System Audio (output)_2026-05-12_17-28-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-28-28.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_17-28-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-28-58.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-29-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-29-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-29-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-29-58.mp4 → NAS ✓ 203K\n rsync System Audio (output)_2026-05-12_17-30-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-30-28.mp4 → NAS ✓ 196K\n rsync System Audio (output)_2026-05-12_17-30-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-30-58.mp4 → NAS ✓ 212K\n rsync System Audio (output)_2026-05-12_17-31-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-31-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-31-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-31-58.mp4 → NAS ✓ 199K\n rsync System Audio (output)_2026-05-12_17-32-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-32-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-32-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-32-58.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_17-33-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-33-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-33-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-33-58.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_17-34-28.mp4 → NAS ✓ 8.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-34-28.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_17-34-58.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-34-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-35-28.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-35-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-35-58.mp4 → NAS ✓ 8.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-35-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-36-28.mp4 → NAS ✓ 15K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-36-28.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-36-58.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-36-58.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-12_17-37-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-37-28.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-12_17-37-58.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-37-58.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_17-38-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-38-28.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_17-38-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-38-58.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-39-28.mp4 → NAS ✓ 12K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-39-28.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-12_17-39-58.mp4 → NAS ✓ 7.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-39-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-40-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-40-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-40-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-40-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-41-28.mp4 → NAS ✓ 9.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-41-28.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-12_17-41-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-41-58.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-42-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-42-28.mp4 → NAS ✓ 203K\n rsync System Audio (output)_2026-05-12_17-42-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-42-58.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_17-43-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-43-28.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-12_17-43-58.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-43-58.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-44-28.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-44-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-44-58.mp4 → NAS ✓ 7.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-44-58.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-45-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-45-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-45-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-45-58.mp4 → NAS ✓ 200K\n rsync System Audio (output)_2026-05-12_17-46-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-46-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-46-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-46-58.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-47-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-47-28.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_17-47-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-47-58.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-48-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-48-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-48-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-48-58.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-49-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-49-28.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-49-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-49-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-50-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-50-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-50-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-50-58.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_17-51-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-51-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-51-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-51-58.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_17-52-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-52-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-52-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-52-58.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-53-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-53-28.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-12_17-53-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-53-58.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-54-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-54-28.mp4 → NAS ✓ 219K\n rsync System Audio (output)_2026-05-12_17-54-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-54-58.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-55-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-55-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-55-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-55-58.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-56-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-56-28.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-58-58.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-59-28.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-00-28.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-00-58.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-01-58.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-04-58.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-08-27.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-09-27.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-09-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-10-27.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-10-57.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-11-27.mp4 → NAS ✓ 218K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-11-57.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-12-57.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-14-57.mp4 → NAS ✓ 228K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-15-27.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-15-57.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-16-57.mp4 → NAS ✓ 221K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-19-27.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-19-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-20-27.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-20-56.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-21-26.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-21-56.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-22-26.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-22-56.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-23-26.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-23-56.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-24-26.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-24-56.mp4 → NAS ✓ 217K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-25-56.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-26-26.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-26-56.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-28-26.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-28-56.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-29-56.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-30-56.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-31-56.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-32-26.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-32-56.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-33-56.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-34-56.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-35-26.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-35-56.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-36-26.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-36-56.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-37-26.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-37-56.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-38-26.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-38-56.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-39-26.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-39-56.mp4 → NAS ✓ 195K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-40-26.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-40-56.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-41-26.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-42-26.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-43-26.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-44-26.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-45-26.mp4 → NAS ✓ 207K\n audio files total: 1113 file(s), 145M\n\n[+09m26s] ▶ Copying screenpipe logs for 2026-05-12\n rsync logs → NAS ✓ 1 file(s), 288K\n\n[2026-05-13 21:46:00] Archive DB size: 2.0G\n[2026-05-13 21:46:00] Total time: 9m26s\n[2026-05-13 21:46:00] Sync complete for 2026-05-12\n[2026-05-13 21:46:00] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-13\n[2026-05-14 09:28:19] ========================================\n[2026-05-14 09:28:19] Screenpipe sync starting for: 2026-05-13\n[2026-05-14 09:28:19] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (5.6G)\n[2026-05-14 09:28:19] ERROR: NAS not mounted at /Volumes/screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-13\n[2026-05-14 09:28:31] ========================================\n[2026-05-14 09:28:31] Screenpipe sync starting for: 2026-05-13\n[2026-05-14 09:28:31] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (5.6G)\n NAS mount: OK /Volumes/screenpipe","depth":4,"on_screen":true,"value":"rsync System Audio (output)_2026-05-12_06-55-21.mp4 → NAS ✓ 249K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-55-44.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_06-55-50.mp4 → NAS ✓ 242K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-56-14.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-12_06-56-19.mp4 → NAS ✓ 228K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-56-44.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-12_06-56-49.mp4 → NAS ✓ 247K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-57-14.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_06-57-17.mp4 → NAS ✓ 241K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-57-44.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_06-57-46.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-58-14.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_06-58-44.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-58-44.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_06-59-13.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-59-13.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_06-59-43.mp4 → NAS ✓ 241K\n rsync LakyLak bose qc35 II (input)_2026-05-12_06-59-43.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-12_07-00-12.mp4 → NAS ✓ 258K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-00-13.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_07-00-41.mp4 → NAS ✓ 253K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-00-43.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_07-01-09.mp4 → NAS ✓ 257K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-01-13.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_07-01-37.mp4 → NAS ✓ 252K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-01-42.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_07-02-06.mp4 → NAS ✓ 252K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-02-12.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_07-02-36.mp4 → NAS ✓ 251K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-02-42.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_07-03-04.mp4 → NAS ✓ 257K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-03-12.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_07-03-31.mp4 → NAS ✓ 264K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-03-42.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_07-04-00.mp4 → NAS ✓ 253K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-04-12.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_07-04-29.mp4 → NAS ✓ 236K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-04-42.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_07-04-59.mp4 → NAS ✓ 253K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-05-11.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_07-05-27.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-05-41.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_07-05-57.mp4 → NAS ✓ 244K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-06-11.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_07-06-26.mp4 → NAS ✓ 246K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-06-41.mp4 → NAS ✓ 199K\n rsync System Audio (output)_2026-05-12_07-06-56.mp4 → NAS ✓ 247K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-07-11.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_07-07-24.mp4 → NAS ✓ 235K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-07-40.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_07-07-51.mp4 → NAS ✓ 220K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-08-10.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-12_07-08-20.mp4 → NAS ✓ 240K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-08-40.mp4 → NAS ✓ 225K\n rsync System Audio (output)_2026-05-12_07-08-47.mp4 → NAS ✓ 231K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-09-10.mp4 → NAS ✓ 223K\n rsync System Audio (output)_2026-05-12_07-09-17.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-09-40.mp4 → NAS ✓ 223K\n rsync System Audio (output)_2026-05-12_07-09-45.mp4 → NAS ✓ 249K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-10-09.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_07-10-13.mp4 → NAS ✓ 227K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-10-39.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-12_07-10-42.mp4 → NAS ✓ 216K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-11-09.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_07-11-11.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-11-39.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-12_07-12-09.mp4 → NAS ✓ 233K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-12-09.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_07-12-38.mp4 → NAS ✓ 234K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-12-39.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_07-13-08.mp4 → NAS ✓ 245K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-13-09.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_07-13-38.mp4 → NAS ✓ 106K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-13-39.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-12_07-14-07.mp4 → NAS ✓ 14K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-14-08.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_07-14-36.mp4 → NAS ✓ 44K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-14-38.mp4 → NAS ✓ 228K\n rsync System Audio (output)_2026-05-12_07-15-06.mp4 → NAS ✓ 5.0K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-15-08.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_07-15-35.mp4 → NAS ✓ 5.0K\n rsync LakyLak bose qc35 II (input)_2026-05-12_07-15-38.mp4 → NAS ✓ 226K\n rsync System Audio (output)_2026-05-12_07-16-05.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_07-16-29.mp4 → NAS ✓ 43K\n rsync MacBook Pro Microphone (input)_2026-05-12_07-16-37.mp4 → NAS ✓ 16K\n rsync System Audio (output)_2026-05-12_07-16-35.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-16-47.mp4 → NAS ✓ 10K\n rsync System Audio (output)_2026-05-12_07-17-05.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-17-19.mp4 → NAS ✓ 27K\n rsync System Audio (output)_2026-05-12_07-17-34.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-17-49.mp4 → NAS ✓ 56K\n rsync System Audio (output)_2026-05-12_07-18-04.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-18-19.mp4 → NAS ✓ 66K\n rsync System Audio (output)_2026-05-12_07-18-34.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-18-49.mp4 → NAS ✓ 137K\n rsync System Audio (output)_2026-05-12_07-19-04.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-19-19.mp4 → NAS ✓ 148K\n rsync System Audio (output)_2026-05-12_07-19-33.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-19-49.mp4 → NAS ✓ 93K\n rsync System Audio (output)_2026-05-12_07-20-03.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-20-19.mp4 → NAS ✓ 110K\n rsync System Audio (output)_2026-05-12_07-20-33.mp4 → NAS ✓ 83K\n rsync soundcore AeroClip (input)_2026-05-12_07-20-49.mp4 → NAS ✓ 182K\n rsync System Audio (output)_2026-05-12_07-21-03.mp4 → NAS ✓ 47K\n rsync soundcore AeroClip (input)_2026-05-12_07-21-19.mp4 → NAS ✓ 128K\n rsync System Audio (output)_2026-05-12_07-21-33.mp4 → NAS ✓ 223K\n rsync soundcore AeroClip (input)_2026-05-12_07-21-49.mp4 → NAS ✓ 68K\n rsync System Audio (output)_2026-05-12_07-22-02.mp4 → NAS ✓ 90K\n rsync soundcore AeroClip (input)_2026-05-12_07-22-19.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-22-32.mp4 → NAS ✓ 30K\n rsync soundcore AeroClip (input)_2026-05-12_07-22-49.mp4 → NAS ✓ 19K\n rsync System Audio (output)_2026-05-12_07-23-02.mp4 → NAS ✓ 210K\n rsync soundcore AeroClip (input)_2026-05-12_07-23-19.mp4 → NAS ✓ 27K\n rsync System Audio (output)_2026-05-12_07-23-32.mp4 → NAS ✓ 84K\n rsync soundcore AeroClip (input)_2026-05-12_07-23-49.mp4 → NAS ✓ 22K\n rsync System Audio (output)_2026-05-12_07-24-02.mp4 → NAS ✓ 209K\n rsync soundcore AeroClip (input)_2026-05-12_07-24-19.mp4 → NAS ✓ 33K\n rsync System Audio (output)_2026-05-12_07-24-32.mp4 → NAS ✓ 103K\n rsync soundcore AeroClip (input)_2026-05-12_07-24-49.mp4 → NAS ✓ 55K\n rsync System Audio (output)_2026-05-12_07-25-01.mp4 → NAS ✓ 139K\n rsync soundcore AeroClip (input)_2026-05-12_07-25-19.mp4 → NAS ✓ 20K\n rsync System Audio (output)_2026-05-12_07-25-31.mp4 → NAS ✓ 135K\n rsync soundcore AeroClip (input)_2026-05-12_07-25-49.mp4 → NAS ✓ 13K\n rsync System Audio (output)_2026-05-12_07-26-01.mp4 → NAS ✓ 174K\n rsync soundcore AeroClip (input)_2026-05-12_07-26-19.mp4 → NAS ✓ 14K\n rsync System Audio (output)_2026-05-12_07-26-31.mp4 → NAS ✓ 170K\n rsync soundcore AeroClip (input)_2026-05-12_07-26-49.mp4 → NAS ✓ 29K\n rsync System Audio (output)_2026-05-12_07-27-01.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_07-27-19.mp4 → NAS ✓ 23K\n rsync System Audio (output)_2026-05-12_07-27-31.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-27-49.mp4 → NAS ✓ 44K\n rsync System Audio (output)_2026-05-12_07-28-01.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-28-19.mp4 → NAS ✓ 24K\n rsync System Audio (output)_2026-05-12_07-28-31.mp4 → NAS ✓ 42K\n rsync soundcore AeroClip (input)_2026-05-12_07-28-49.mp4 → NAS ✓ 35K\n rsync System Audio (output)_2026-05-12_07-29-00.mp4 → NAS ✓ 63K\n rsync soundcore AeroClip (input)_2026-05-12_07-29-19.mp4 → NAS ✓ 24K\n rsync System Audio (output)_2026-05-12_07-29-30.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-29-49.mp4 → NAS ✓ 18K\n rsync System Audio (output)_2026-05-12_07-30-00.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-30-19.mp4 → NAS ✓ 42K\n rsync System Audio (output)_2026-05-12_07-30-30.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-30-49.mp4 → NAS ✓ 36K\n rsync System Audio (output)_2026-05-12_07-31-00.mp4 → NAS ✓ 62K\n rsync soundcore AeroClip (input)_2026-05-12_07-31-19.mp4 → NAS ✓ 21K\n rsync System Audio (output)_2026-05-12_07-31-30.mp4 → NAS ✓ 134K\n rsync soundcore AeroClip (input)_2026-05-12_07-31-49.mp4 → NAS ✓ 18K\n rsync System Audio (output)_2026-05-12_07-31-59.mp4 → NAS ✓ 164K\n rsync soundcore AeroClip (input)_2026-05-12_07-32-19.mp4 → NAS ✓ 41K\n rsync System Audio (output)_2026-05-12_07-32-29.mp4 → NAS ✓ 28K\n rsync soundcore AeroClip (input)_2026-05-12_07-32-49.mp4 → NAS ✓ 36K\n rsync System Audio (output)_2026-05-12_07-32-59.mp4 → NAS ✓ 33K\n rsync soundcore AeroClip (input)_2026-05-12_07-33-18.mp4 → NAS ✓ 19K\n rsync System Audio (output)_2026-05-12_07-33-29.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-33-48.mp4 → NAS ✓ 79K\n rsync System Audio (output)_2026-05-12_07-33-58.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-34-18.mp4 → NAS ✓ 82K\n rsync System Audio (output)_2026-05-12_07-34-28.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-34-48.mp4 → NAS ✓ 91K\n rsync System Audio (output)_2026-05-12_07-34-58.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-35-18.mp4 → NAS ✓ 71K\n rsync System Audio (output)_2026-05-12_07-35-28.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-35-48.mp4 → NAS ✓ 45K\n rsync System Audio (output)_2026-05-12_07-35-58.mp4 → NAS ✓ 158K\n rsync soundcore AeroClip (input)_2026-05-12_07-36-18.mp4 → NAS ✓ 23K\n rsync System Audio (output)_2026-05-12_07-36-27.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-36-48.mp4 → NAS ✓ 22K\n rsync System Audio (output)_2026-05-12_07-36-57.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-37-18.mp4 → NAS ✓ 33K\n rsync System Audio (output)_2026-05-12_07-37-27.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-37-48.mp4 → NAS ✓ 19K\n rsync System Audio (output)_2026-05-12_07-37-57.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-38-18.mp4 → NAS ✓ 17K\n rsync System Audio (output)_2026-05-12_07-38-26.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-38-48.mp4 → NAS ✓ 40K\n rsync System Audio (output)_2026-05-12_07-38-56.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-39-18.mp4 → NAS ✓ 25K\n rsync System Audio (output)_2026-05-12_07-39-26.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-39-48.mp4 → NAS ✓ 32K\n rsync System Audio (output)_2026-05-12_07-39-55.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-40-18.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-40-25.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 → NAS ✓ 14K\n rsync System Audio (output)_2026-05-12_07-40-55.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-41-18.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-41-24.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-41-48.mp4 → NAS ✓ 28K\n rsync System Audio (output)_2026-05-12_07-41-54.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-42-18.mp4 → NAS ✓ 45K\n rsync System Audio (output)_2026-05-12_07-42-24.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-42-48.mp4 → NAS ✓ 67K\n rsync System Audio (output)_2026-05-12_07-42-54.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-43-18.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-43-23.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-43-47.mp4 → NAS ✓ 16K\n rsync System Audio (output)_2026-05-12_07-43-53.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_07-44-23.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-44-47.mp4 → NAS ✓ 9.0K\n rsync System Audio (output)_2026-05-12_07-44-53.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-45-19.mp4 → NAS ✓ 37K\n rsync System Audio (output)_2026-05-12_07-45-22.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-45-49.mp4 → NAS ✓ 23K\n rsync System Audio (output)_2026-05-12_07-45-51.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-46-19.mp4 → NAS ✓ 7.0K\n rsync System Audio (output)_2026-05-12_07-46-21.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_07-46-51.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_07-47-21.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-47-19.mp4 → NAS ✓ 7.0K\n rsync System Audio (output)_2026-05-12_07-47-51.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-47-51.mp4 → NAS ✓ 16K\n rsync System Audio (output)_2026-05-12_07-48-21.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-48-21.mp4 → NAS ✓ 15K\n rsync System Audio (output)_2026-05-12_07-48-50.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-48-51.mp4 → NAS ✓ 14K\n rsync System Audio (output)_2026-05-12_07-49-20.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-49-21.mp4 → NAS ✓ 11K\n rsync System Audio (output)_2026-05-12_07-49-50.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-49-51.mp4 → NAS ✓ 6.0K\n rsync System Audio (output)_2026-05-12_07-50-20.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-50-27.mp4 → NAS ✓ 25K\n rsync System Audio (output)_2026-05-12_07-50-50.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-50-59.mp4 → NAS ✓ 10K\n rsync System Audio (output)_2026-05-12_07-51-19.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-51-29.mp4 → NAS ✓ 12K\n rsync System Audio (output)_2026-05-12_07-51-48.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-51-59.mp4 → NAS ✓ 17K\n rsync System Audio (output)_2026-05-12_07-52-18.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-52-29.mp4 → NAS ✓ 17K\n rsync System Audio (output)_2026-05-12_07-52-48.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-52-59.mp4 → NAS ✓ 13K\n rsync System Audio (output)_2026-05-12_07-53-18.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-53-29.mp4 → NAS ✓ 18K\n rsync System Audio (output)_2026-05-12_07-53-48.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-53-59.mp4 → NAS ✓ 9.0K\n rsync System Audio (output)_2026-05-12_07-54-17.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-54-29.mp4 → NAS ✓ 7.0K\n rsync System Audio (output)_2026-05-12_07-54-47.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-54-59.mp4 → NAS ✓ 12K\n rsync System Audio (output)_2026-05-12_07-55-17.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-55-29.mp4 → NAS ✓ 38K\n rsync System Audio (output)_2026-05-12_07-55-47.mp4 → NAS ✓ 170K\n rsync soundcore AeroClip (input)_2026-05-12_07-55-58.mp4 → NAS ✓ 218K\n rsync System Audio (output)_2026-05-12_07-56-16.mp4 → NAS ✓ 194K\n rsync soundcore AeroClip (input)_2026-05-12_07-56-28.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_07-56-45.mp4 → NAS ✓ 196K\n rsync soundcore AeroClip (input)_2026-05-12_07-56-58.mp4 → NAS ✓ 159K\n rsync System Audio (output)_2026-05-12_07-57-15.mp4 → NAS ✓ 230K\n rsync soundcore AeroClip (input)_2026-05-12_07-57-28.mp4 → NAS ✓ 107K\n rsync System Audio (output)_2026-05-12_07-57-44.mp4 → NAS ✓ 238K\n rsync soundcore AeroClip (input)_2026-05-12_07-57-58.mp4 → NAS ✓ 94K\n rsync System Audio (output)_2026-05-12_07-58-14.mp4 → NAS ✓ 229K\n rsync soundcore AeroClip (input)_2026-05-12_07-58-28.mp4 → NAS ✓ 107K\n rsync System Audio (output)_2026-05-12_07-58-44.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_07-58-58.mp4 → NAS ✓ 84K\n rsync System Audio (output)_2026-05-12_07-59-13.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-59-27.mp4 → NAS ✓ 52K\n rsync System Audio (output)_2026-05-12_07-59-43.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_07-59-57.mp4 → NAS ✓ 65K\n rsync System Audio (output)_2026-05-12_08-00-13.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-00-27.mp4 → NAS ✓ 170K\n rsync System Audio (output)_2026-05-12_08-00-43.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-00-57.mp4 → NAS ✓ 163K\n rsync System Audio (output)_2026-05-12_08-01-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-01-27.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-12_08-01-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-01-57.mp4 → NAS ✓ 219K\n rsync System Audio (output)_2026-05-12_08-02-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-02-27.mp4 → NAS ✓ 161K\n rsync System Audio (output)_2026-05-12_08-02-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-02-57.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-12_08-03-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-03-28.mp4 → NAS ✓ 124K\n rsync System Audio (output)_2026-05-12_08-03-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-03-58.mp4 → NAS ✓ 181K\n rsync System Audio (output)_2026-05-12_08-04-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-04-27.mp4 → NAS ✓ 248K\n rsync System Audio (output)_2026-05-12_08-04-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-04-57.mp4 → NAS ✓ 247K\n rsync System Audio (output)_2026-05-12_08-05-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-05-27.mp4 → NAS ✓ 239K\n rsync System Audio (output)_2026-05-12_08-05-42.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-05-57.mp4 → NAS ✓ 250K\n rsync System Audio (output)_2026-05-12_08-06-12.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-06-27.mp4 → NAS ✓ 232K\n rsync System Audio (output)_2026-05-12_08-06-41.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-06-57.mp4 → NAS ✓ 247K\n rsync System Audio (output)_2026-05-12_08-07-11.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-07-27.mp4 → NAS ✓ 238K\n rsync System Audio (output)_2026-05-12_08-07-41.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-07-57.mp4 → NAS ✓ 136K\n rsync System Audio (output)_2026-05-12_08-08-11.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-08-27.mp4 → NAS ✓ 177K\n rsync System Audio (output)_2026-05-12_08-08-41.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-08-57.mp4 → NAS ✓ 220K\n rsync System Audio (output)_2026-05-12_08-09-11.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-09-27.mp4 → NAS ✓ 219K\n rsync soundcore AeroClip (input)_2026-05-12_08-09-57.mp4 → NAS ✓ 245K\n rsync soundcore AeroClip (input)_2026-05-12_08-12-10.mp4 → NAS ✓ 58K\n rsync soundcore AeroClip (input)_2026-05-12_08-12-42.mp4 → NAS ✓ 117K\n rsync soundcore AeroClip (input)_2026-05-12_08-13-12.mp4 → NAS ✓ 67K\n rsync soundcore AeroClip (input)_2026-05-12_08-13-42.mp4 → NAS ✓ 64K\n rsync soundcore AeroClip (input)_2026-05-12_08-14-12.mp4 → NAS ✓ 92K\n rsync soundcore AeroClip (input)_2026-05-12_08-14-42.mp4 → NAS ✓ 60K\n rsync soundcore AeroClip (input)_2026-05-12_08-15-12.mp4 → NAS ✓ 64K\n rsync soundcore AeroClip (input)_2026-05-12_08-15-42.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_08-16-12.mp4 → NAS ✓ 17K\n rsync soundcore AeroClip (input)_2026-05-12_08-16-42.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_08-17-12.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_08-17-42.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-18-12.mp4 → NAS ✓ 7.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-19-13.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-19-45.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_08-20-15.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_08-20-45.mp4 → NAS ✓ 14K\n rsync soundcore AeroClip (input)_2026-05-12_08-21-15.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-21-45.mp4 → NAS ✓ 18K\n rsync soundcore AeroClip (input)_2026-05-12_08-22-15.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-22-45.mp4 → NAS ✓ 17K\n rsync soundcore AeroClip (input)_2026-05-12_08-23-15.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_08-23-45.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-24-15.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_08-24-45.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_08-25-15.mp4 → NAS ✓ 28K\n rsync soundcore AeroClip (input)_2026-05-12_08-25-45.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_08-26-28.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_08-27-00.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_08-27-30.mp4 → NAS ✓ 38K\n rsync soundcore AeroClip (input)_2026-05-12_08-28-00.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_08-28-30.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_08-29-00.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_08-29-30.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_08-30-00.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_08-30-30.mp4 → NAS ✓ 29K\n rsync soundcore AeroClip (input)_2026-05-12_08-31-00.mp4 → NAS ✓ 60K\n rsync soundcore AeroClip (input)_2026-05-12_08-31-30.mp4 → NAS ✓ 124K\n rsync soundcore AeroClip (input)_2026-05-12_08-32-00.mp4 → NAS ✓ 73K\n rsync soundcore AeroClip (input)_2026-05-12_08-32-30.mp4 → NAS ✓ 39K\n rsync soundcore AeroClip (input)_2026-05-12_08-32-59.mp4 → NAS ✓ 52K\n rsync soundcore AeroClip (input)_2026-05-12_08-33-29.mp4 → NAS ✓ 127K\n rsync soundcore AeroClip (input)_2026-05-12_08-33-59.mp4 → NAS ✓ 139K\n rsync soundcore AeroClip (input)_2026-05-12_08-34-29.mp4 → NAS ✓ 169K\n rsync soundcore AeroClip (input)_2026-05-12_08-34-59.mp4 → NAS ✓ 85K\n rsync soundcore AeroClip (input)_2026-05-12_08-35-29.mp4 → NAS ✓ 30K\n rsync soundcore AeroClip (input)_2026-05-12_08-35-59.mp4 → NAS ✓ 34K\n rsync soundcore AeroClip (input)_2026-05-12_08-36-29.mp4 → NAS ✓ 47K\n rsync soundcore AeroClip (input)_2026-05-12_08-37-10.mp4 → NAS ✓ 10K\n rsync soundcore AeroClip (input)_2026-05-12_08-37-42.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_08-38-12.mp4 → NAS ✓ 123K\n rsync soundcore AeroClip (input)_2026-05-12_08-38-42.mp4 → NAS ✓ 164K\n rsync soundcore AeroClip (input)_2026-05-12_08-39-12.mp4 → NAS ✓ 179K\n rsync soundcore AeroClip (input)_2026-05-12_08-39-42.mp4 → NAS ✓ 176K\n rsync soundcore AeroClip (input)_2026-05-12_08-40-12.mp4 → NAS ✓ 173K\n rsync soundcore AeroClip (input)_2026-05-12_08-40-42.mp4 → NAS ✓ 157K\n rsync soundcore AeroClip (input)_2026-05-12_08-41-12.mp4 → NAS ✓ 101K\n rsync soundcore AeroClip (input)_2026-05-12_08-41-42.mp4 → NAS ✓ 119K\n rsync soundcore AeroClip (input)_2026-05-12_08-42-12.mp4 → NAS ✓ 79K\n rsync soundcore AeroClip (input)_2026-05-12_08-42-42.mp4 → NAS ✓ 14K\n rsync soundcore AeroClip (input)_2026-05-12_08-43-12.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_08-43-42.mp4 → NAS ✓ 25K\n rsync soundcore AeroClip (input)_2026-05-12_08-44-12.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-44-42.mp4 → NAS ✓ 105K\n rsync soundcore AeroClip (input)_2026-05-12_08-45-12.mp4 → NAS ✓ 160K\n rsync soundcore AeroClip (input)_2026-05-12_08-45-41.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_08-46-11.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_08-46-41.mp4 → NAS ✓ 12K\n rsync soundcore AeroClip (input)_2026-05-12_08-47-11.mp4 → NAS ✓ 23K\n rsync soundcore AeroClip (input)_2026-05-12_08-47-41.mp4 → NAS ✓ 47K\n rsync soundcore AeroClip (input)_2026-05-12_08-48-11.mp4 → NAS ✓ 83K\n rsync soundcore AeroClip (input)_2026-05-12_08-48-41.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_08-49-11.mp4 → NAS ✓ 40K\n rsync soundcore AeroClip (input)_2026-05-12_08-49-41.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_08-50-11.mp4 → NAS ✓ 17K\n rsync soundcore AeroClip (input)_2026-05-12_08-50-41.mp4 → NAS ✓ 125K\n rsync soundcore AeroClip (input)_2026-05-12_08-51-11.mp4 → NAS ✓ 69K\n rsync soundcore AeroClip (input)_2026-05-12_08-51-41.mp4 → NAS ✓ 67K\n rsync soundcore AeroClip (input)_2026-05-12_08-52-11.mp4 → NAS ✓ 57K\n rsync soundcore AeroClip (input)_2026-05-12_08-52-41.mp4 → NAS ✓ 38K\n rsync soundcore AeroClip (input)_2026-05-12_08-53-11.mp4 → NAS ✓ 29K\n rsync soundcore AeroClip (input)_2026-05-12_08-53-41.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_08-54-11.mp4 → NAS ✓ 29K\n rsync soundcore AeroClip (input)_2026-05-12_08-54-41.mp4 → NAS ✓ 14K\n rsync soundcore AeroClip (input)_2026-05-12_08-55-11.mp4 → NAS ✓ 39K\n rsync soundcore AeroClip (input)_2026-05-12_08-55-41.mp4 → NAS ✓ 25K\n rsync soundcore AeroClip (input)_2026-05-12_08-56-11.mp4 → NAS ✓ 31K\n rsync soundcore AeroClip (input)_2026-05-12_08-56-41.mp4 → NAS ✓ 24K\n rsync soundcore AeroClip (input)_2026-05-12_08-57-11.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_08-57-41.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_08-58-11.mp4 → NAS ✓ 18K\n rsync soundcore AeroClip (input)_2026-05-12_08-58-41.mp4 → NAS ✓ 35K\n rsync soundcore AeroClip (input)_2026-05-12_08-59-11.mp4 → NAS ✓ 35K\n rsync soundcore AeroClip (input)_2026-05-12_08-59-41.mp4 → NAS ✓ 19K\n rsync soundcore AeroClip (input)_2026-05-12_09-00-11.mp4 → NAS ✓ 19K\n rsync soundcore AeroClip (input)_2026-05-12_09-00-41.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_09-01-11.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_09-01-41.mp4 → NAS ✓ 27K\n rsync soundcore AeroClip (input)_2026-05-12_09-02-11.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-03-07.mp4 → NAS ✓ 32K\n rsync soundcore AeroClip (input)_2026-05-12_09-03-39.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-04-09.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_09-04-39.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-05-12.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_09-05-44.mp4 → NAS ✓ 28K\n rsync soundcore AeroClip (input)_2026-05-12_09-06-14.mp4 → NAS ✓ 60K\n rsync soundcore AeroClip (input)_2026-05-12_09-06-44.mp4 → NAS ✓ 43K\n rsync soundcore AeroClip (input)_2026-05-12_09-07-14.mp4 → NAS ✓ 42K\n rsync soundcore AeroClip (input)_2026-05-12_09-07-44.mp4 → NAS ✓ 37K\n rsync soundcore AeroClip (input)_2026-05-12_09-08-14.mp4 → NAS ✓ 26K\n rsync soundcore AeroClip (input)_2026-05-12_09-08-44.mp4 → NAS ✓ 36K\n rsync soundcore AeroClip (input)_2026-05-12_09-09-14.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-09-44.mp4 → NAS ✓ 7.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-10-14.mp4 → NAS ✓ 10K\n rsync soundcore AeroClip (input)_2026-05-12_09-10-44.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-11-14.mp4 → NAS ✓ 7.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-11-44.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-12-14.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_09-12-43.mp4 → NAS ✓ 35K\n rsync soundcore AeroClip (input)_2026-05-12_09-13-13.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_09-13-43.mp4 → NAS ✓ 40K\n rsync soundcore AeroClip (input)_2026-05-12_09-14-13.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-14-43.mp4 → NAS ✓ 24K\n rsync soundcore AeroClip (input)_2026-05-12_09-15-13.mp4 → NAS ✓ 29K\n rsync soundcore AeroClip (input)_2026-05-12_09-15-43.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-16-13.mp4 → NAS ✓ 26K\n rsync soundcore AeroClip (input)_2026-05-12_09-16-43.mp4 → NAS ✓ 24K\n rsync soundcore AeroClip (input)_2026-05-12_09-17-13.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_09-17-43.mp4 → NAS ✓ 33K\n rsync soundcore AeroClip (input)_2026-05-12_09-18-13.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_09-18-43.mp4 → NAS ✓ 30K\n rsync soundcore AeroClip (input)_2026-05-12_09-19-12.mp4 → NAS ✓ 12K\n rsync soundcore AeroClip (input)_2026-05-12_09-19-42.mp4 → NAS ✓ 8.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-20-18.mp4 → NAS ✓ 12K\n rsync soundcore AeroClip (input)_2026-05-12_09-20-50.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-21-20.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-21-59.mp4 → NAS ✓ 9.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-22-31.mp4 → NAS ✓ 12K\n rsync soundcore AeroClip (input)_2026-05-12_09-23-01.mp4 → NAS ✓ 28K\n rsync soundcore AeroClip (input)_2026-05-12_09-24-02.mp4 → NAS ✓ 5.0K\n rsync soundcore AeroClip (input)_2026-05-12_09-24-34.mp4 → NAS ✓ 30K\n rsync soundcore AeroClip (input)_2026-05-12_09-25-04.mp4 → NAS ✓ 53K\n rsync soundcore AeroClip (input)_2026-05-12_09-25-34.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_09-26-04.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-26-34.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_09-27-04.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_09-27-34.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_09-28-04.mp4 → NAS ✓ 19K\n rsync soundcore AeroClip (input)_2026-05-12_09-28-34.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_09-29-04.mp4 → NAS ✓ 15K\n rsync soundcore AeroClip (input)_2026-05-12_09-29-34.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_09-30-04.mp4 → NAS ✓ 13K\n rsync soundcore AeroClip (input)_2026-05-12_09-30-34.mp4 → NAS ✓ 21K\n rsync soundcore AeroClip (input)_2026-05-12_09-31-04.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_09-31-33.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-32-03.mp4 → NAS ✓ 16K\n rsync soundcore AeroClip (input)_2026-05-12_09-32-33.mp4 → NAS ✓ 55K\n rsync soundcore AeroClip (input)_2026-05-12_09-33-03.mp4 → NAS ✓ 22K\n rsync soundcore AeroClip (input)_2026-05-12_09-33-33.mp4 → NAS ✓ 11K\n rsync soundcore AeroClip (input)_2026-05-12_09-34-03.mp4 → NAS ✓ 17K\n rsync soundcore AeroClip (input)_2026-05-12_09-34-33.mp4 → NAS ✓ 63K\n rsync soundcore AeroClip (input)_2026-05-12_09-35-03.mp4 → NAS ✓ 57K\n rsync soundcore AeroClip (input)_2026-05-12_09-35-33.mp4 → NAS ✓ 64K\n rsync soundcore AeroClip (input)_2026-05-12_09-36-03.mp4 → NAS ✓ 70K\n rsync soundcore AeroClip (input)_2026-05-12_09-36-33.mp4 → NAS ✓ 56K\n rsync soundcore AeroClip (input)_2026-05-12_09-37-03.mp4 → NAS ✓ 86K\n rsync soundcore AeroClip (input)_2026-05-12_09-37-33.mp4 → NAS ✓ 66K\n rsync soundcore AeroClip (input)_2026-05-12_09-38-03.mp4 → NAS ✓ 20K\n rsync soundcore AeroClip (input)_2026-05-12_09-38-33.mp4 → NAS ✓ 19K\n rsync soundcore AeroClip (input)_2026-05-12_09-39-28.mp4 → NAS ✓ 34K\n rsync soundcore AeroClip (input)_2026-05-12_09-40-00.mp4 → NAS ✓ 53K\n rsync soundcore AeroClip (input)_2026-05-12_09-40-30.mp4 → NAS ✓ 50K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-41-30.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-42-02.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-42-32.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-43-02.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-43-32.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-44-02.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-44-32.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-45-02.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-45-32.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-46-02.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-46-32.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-47-01.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-47-31.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-48-01.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-48-31.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-49-01.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-49-31.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-50-01.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-50-31.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-51-01.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-51-31.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-52-01.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-52-31.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-53-00.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-53-30.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-54-00.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-54-30.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-55-00.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_09-55-30.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-01-32.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-02-01.mp4 → NAS ✓ 221K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-02-30.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-03-00.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-03-29.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-03-59.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-04-29.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-04-59.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-05-29.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-05-59.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-06-29.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-06-59.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-07-29.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-07-59.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-08-28.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-08-58.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-09-28.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-09-58.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-10-28.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-10-58.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-11-28.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-11-58.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-12-28.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-12-58.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-13-28.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-13-58.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-14-28.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-14-58.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-15-28.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-15-57.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-16-27.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-16-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-17-27.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-17-57.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-18-27.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-18-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-19-27.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-19-57.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-28-53.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-29-24.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-29-53.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-30-23.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-30-53.mp4 → NAS ✓ 218K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-31-23.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-31-53.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-32-23.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-32-53.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-33-23.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-33-53.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-34-22.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-34-52.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-35-22.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-35-52.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-36-22.mp4 → NAS ✓ 226K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-36-52.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-37-22.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-37-52.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-38-22.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-38-52.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-39-22.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-39-51.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-40-21.mp4 → NAS ✓ 218K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-40-51.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-41-21.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-41-51.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-42-21.mp4 → NAS ✓ 219K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-42-51.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-43-21.mp4 → NAS ✓ 223K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-43-50.mp4 → NAS ✓ 233K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-44-20.mp4 → NAS ✓ 222K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-44-50.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-45-20.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-45-50.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-46-20.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-46-50.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-47-19.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-47-49.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-48-19.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-48-49.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-49-19.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-49-49.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-50-19.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-50-49.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-51-19.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-51-49.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-52-19.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-52-49.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-53-19.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-53-48.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-54-18.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-54-48.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-55-18.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-55-48.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-56-18.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-56-48.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-57-18.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-57-48.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-58-18.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-58-48.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-59-18.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_10-59-47.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-00-17.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-00-47.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-01-17.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-01-47.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-02-17.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-02-47.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-03-17.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-03-47.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-04-17.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-04-47.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-05-17.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-05-46.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-06-16.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-06-46.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-07-16.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-07-46.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-08-16.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-08-46.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-09-16.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-09-46.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-10-16.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-10-46.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-11-16.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-11-46.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-12-15.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-12-45.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-13-15.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-13-45.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-14-15.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-14-45.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-15-15.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-15-45.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-16-15.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-16-45.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-17-14.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-17-44.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-18-14.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-18-44.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-19-14.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-19-44.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-20-14.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-20-44.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-21-14.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-21-44.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-22-14.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-22-44.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-23-14.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-23-44.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-24-14.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-24-43.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-25-13.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-25-43.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-26-13.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-26-43.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-27-13.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-27-43.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-28-13.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-28-43.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-29-12.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-29-42.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-30-12.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-30-42.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-31-11.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-31-41.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-32-11.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-32-41.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-33-10.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-33-40.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-34-10.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-34-40.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-35-10.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-35-40.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-36-09.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-36-39.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-37-09.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-37-39.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-38-09.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-38-39.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-39-09.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-39-39.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-40-09.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-40-39.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-41-09.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-41-39.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-42-09.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-42-38.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-43-08.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-43-38.mp4 → NAS ✓ 219K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-44-08.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-44-37.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-45-07.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-45-36.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-46-05.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-46-35.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-47-05.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-47-34.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-48-03.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-48-33.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-49-03.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-49-33.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-50-03.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-50-33.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-51-02.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-51-32.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-52-01.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-52-31.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-53-01.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-53-30.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-54-00.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-54-30.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-55-00.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-55-29.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-55-59.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-56-29.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-56-59.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-57-29.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-57-59.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-58-28.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-58-58.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-59-28.mp4 → NAS ✓ 218K\n rsync MacBook Pro Microphone (input)_2026-05-12_11-59-58.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-00-27.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-00-57.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-01-27.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-01-57.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-02-27.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-02-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-03-27.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-03-57.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-04-27.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-04-57.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-05-26.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-05-56.mp4 → NAS ✓ 226K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-06-26.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-06-56.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-07-26.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-07-56.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-08-26.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-08-55.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-09-25.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-09-55.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-10-25.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-10-55.mp4 → NAS ✓ 197K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-11-25.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-11-55.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-12-24.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-12-54.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-13-24.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-13-53.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-14-23.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-14-53.mp4 → NAS ✓ 220K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-15-23.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-15-53.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-16-23.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-16-53.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-17-53.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-18-22.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-18-52.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-19-22.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-19-52.mp4 → NAS ✓ 227K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-20-21.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-20-51.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-21-21.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-21-51.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-22-21.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-22-51.mp4 → NAS ✓ 242K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-59-11.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_12-59-41.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_13-00-11.mp4 → NAS ✓ 194K\n rsync MacBook Pro Microphone (input)_2026-05-12_13-35-39.mp4 → NAS ✓ 208K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-08-11.mp4 → NAS ✓ 217K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-10-40.mp4 → NAS ✓ 207K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-15-09.mp4 → NAS ✓ 198K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-21-38.mp4 → NAS ✓ 221K\n rsync LakyLak bose qc35 II (input)_2026-05-12_14-22-38.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-21-56.mp4 → NAS ✓ 195K\n rsync System Audio (output)_2026-05-12_17-21-56.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_17-22-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-22-28.mp4 → NAS ✓ 195K\n rsync System Audio (output)_2026-05-12_17-22-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-22-58.mp4 → NAS ✓ 196K\n rsync System Audio (output)_2026-05-12_17-23-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-23-28.mp4 → NAS ✓ 200K\n rsync System Audio (output)_2026-05-12_17-23-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-23-58.mp4 → NAS ✓ 196K\n rsync System Audio (output)_2026-05-12_17-24-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-24-28.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-24-58.mp4 → NAS ✓ 199K\n rsync System Audio (output)_2026-05-12_17-24-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-25-28.mp4 → NAS ✓ 195K\n rsync System Audio (output)_2026-05-12_17-25-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-25-58.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_17-25-58.mp4 → NAS ✓ 5.0K\n rsync System Audio (output)_2026-05-12_17-26-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-26-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-26-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-26-58.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_17-27-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-27-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-27-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-27-58.mp4 → NAS ✓ 194K\n rsync System Audio (output)_2026-05-12_17-28-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-28-28.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_17-28-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-28-58.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-29-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-29-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-29-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-29-58.mp4 → NAS ✓ 203K\n rsync System Audio (output)_2026-05-12_17-30-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-30-28.mp4 → NAS ✓ 196K\n rsync System Audio (output)_2026-05-12_17-30-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-30-58.mp4 → NAS ✓ 212K\n rsync System Audio (output)_2026-05-12_17-31-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-31-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-31-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-31-58.mp4 → NAS ✓ 199K\n rsync System Audio (output)_2026-05-12_17-32-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-32-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-32-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-32-58.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_17-33-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-33-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-33-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-33-58.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_17-34-28.mp4 → NAS ✓ 8.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-34-28.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_17-34-58.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-34-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-35-28.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-35-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-35-58.mp4 → NAS ✓ 8.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-35-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-36-28.mp4 → NAS ✓ 15K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-36-28.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-36-58.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-36-58.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-12_17-37-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-37-28.mp4 → NAS ✓ 209K\n rsync System Audio (output)_2026-05-12_17-37-58.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-37-58.mp4 → NAS ✓ 206K\n rsync System Audio (output)_2026-05-12_17-38-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-38-28.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_17-38-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-38-58.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-39-28.mp4 → NAS ✓ 12K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-39-28.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-12_17-39-58.mp4 → NAS ✓ 7.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-39-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-40-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-40-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-40-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-40-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-41-28.mp4 → NAS ✓ 9.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-41-28.mp4 → NAS ✓ 215K\n rsync System Audio (output)_2026-05-12_17-41-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-41-58.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-42-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-42-28.mp4 → NAS ✓ 203K\n rsync System Audio (output)_2026-05-12_17-42-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-42-58.mp4 → NAS ✓ 207K\n rsync System Audio (output)_2026-05-12_17-43-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-43-28.mp4 → NAS ✓ 214K\n rsync System Audio (output)_2026-05-12_17-43-58.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-43-58.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-44-28.mp4 → NAS ✓ 6.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-44-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-44-58.mp4 → NAS ✓ 7.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-44-58.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-45-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-45-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-45-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-45-58.mp4 → NAS ✓ 200K\n rsync System Audio (output)_2026-05-12_17-46-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-46-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-46-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-46-58.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-47-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-47-28.mp4 → NAS ✓ 202K\n rsync System Audio (output)_2026-05-12_17-47-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-47-58.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-48-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-48-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-48-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-48-58.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-49-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-49-28.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-49-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-49-58.mp4 → NAS ✓ 210K\n rsync System Audio (output)_2026-05-12_17-50-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-50-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-50-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-50-58.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_17-51-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-51-28.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-51-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-51-58.mp4 → NAS ✓ 204K\n rsync System Audio (output)_2026-05-12_17-52-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-52-28.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-52-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-52-58.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-53-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-53-28.mp4 → NAS ✓ 213K\n rsync System Audio (output)_2026-05-12_17-53-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-53-58.mp4 → NAS ✓ 208K\n rsync System Audio (output)_2026-05-12_17-54-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-54-28.mp4 → NAS ✓ 219K\n rsync System Audio (output)_2026-05-12_17-54-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-54-58.mp4 → NAS ✓ 211K\n rsync System Audio (output)_2026-05-12_17-55-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-55-28.mp4 → NAS ✓ 205K\n rsync System Audio (output)_2026-05-12_17-55-58.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-55-58.mp4 → NAS ✓ 201K\n rsync System Audio (output)_2026-05-12_17-56-28.mp4 → NAS ✓ 5.0K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-56-28.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-58-58.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_17-59-28.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-00-28.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-00-58.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-01-58.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-04-58.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-08-27.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-09-27.mp4 → NAS ✓ 208K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-09-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-10-27.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-10-57.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-11-27.mp4 → NAS ✓ 218K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-11-57.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-12-57.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-14-57.mp4 → NAS ✓ 228K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-15-27.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-15-57.mp4 → NAS ✓ 213K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-16-57.mp4 → NAS ✓ 221K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-19-27.mp4 → NAS ✓ 215K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-19-57.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-20-27.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-20-56.mp4 → NAS ✓ 211K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-21-26.mp4 → NAS ✓ 204K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-21-56.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-22-26.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-22-56.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-23-26.mp4 → NAS ✓ 212K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-23-56.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-24-26.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-24-56.mp4 → NAS ✓ 217K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-25-56.mp4 → NAS ✓ 214K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-26-26.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-26-56.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-28-26.mp4 → NAS ✓ 216K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-28-56.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-29-56.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-30-56.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-31-56.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-32-26.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-32-56.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-33-56.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-34-56.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-35-26.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-35-56.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-36-26.mp4 → NAS ✓ 206K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-36-56.mp4 → NAS ✓ 205K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-37-26.mp4 → NAS ✓ 201K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-37-56.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-38-26.mp4 → NAS ✓ 199K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-38-56.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-39-26.mp4 → NAS ✓ 200K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-39-56.mp4 → NAS ✓ 195K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-40-26.mp4 → NAS ✓ 198K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-40-56.mp4 → NAS ✓ 202K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-41-26.mp4 → NAS ✓ 203K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-42-26.mp4 → NAS ✓ 209K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-43-26.mp4 → NAS ✓ 207K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-44-26.mp4 → NAS ✓ 210K\n rsync MacBook Pro Microphone (input)_2026-05-12_18-45-26.mp4 → NAS ✓ 207K\n audio files total: 1113 file(s), 145M\n\n[+09m26s] ▶ Copying screenpipe logs for 2026-05-12\n rsync logs → NAS ✓ 1 file(s), 288K\n\n[2026-05-13 21:46:00] Archive DB size: 2.0G\n[2026-05-13 21:46:00] Total time: 9m26s\n[2026-05-13 21:46:00] Sync complete for 2026-05-12\n[2026-05-13 21:46:00] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-13\n[2026-05-14 09:28:19] ========================================\n[2026-05-14 09:28:19] Screenpipe sync starting for: 2026-05-13\n[2026-05-14 09:28:19] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (5.6G)\n[2026-05-14 09:28:19] ERROR: NAS not mounted at /Volumes/screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-13\n[2026-05-14 09:28:31] ========================================\n[2026-05-14 09:28:31] Screenpipe sync starting for: 2026-05-13\n[2026-05-14 09:28:31] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (5.6G)\n NAS mount: OK /Volumes/screenpipe","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.14097223,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.14097223,"top":0.05888889,"width":0.140625,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14513889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28159723,"top":0.05888889,"width":0.140625,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.2857639,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.42222223,"top":0.05888889,"width":0.140625,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.4263889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.5628472,"top":0.05888889,"width":0.140625,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56701386,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-129-190:~ (sqlite3)","depth":2,"bounds":{"left":0.7034722,"top":0.05888889,"width":0.140625,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70763886,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-20-31-146:~ (-zsh)","depth":2,"bounds":{"left":0.8440972,"top":0.05888889,"width":0.140625,"height":0.026666667},"on_screen":true,"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.84826386,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95625,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"ec2-user@ip-10-30-129-190:~","depth":1,"bounds":{"left":0.42916667,"top":0.033333335,"width":0.14305556,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
1744185149323224845
|
4383911395047157063
|
visual_change
|
accessibility
|
NULL
|
rsync System Audio (output)_2026-05-12_06-55-21.mp rsync System Audio (output)_2026-05-12_06-55-21.mp4 → NAS ✓ 249K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-55-44.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_06-55-50.mp4 → NAS ✓ 242K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-56-14.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-12_06-56-19.mp4 → NAS ✓ 228K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-56-44.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-12_06-56-49.mp4 → NAS ✓ 247K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-57-14.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_06-57-17.mp4 → NAS ✓ 241K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-57-44.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-12_06-57-46.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-58-14.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_06-58-44.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-58-44.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_06-59-13.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-59-13.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_06-59-43.mp4 → NAS ✓ 241K
rsync LakyLak bose qc35 II (input)_2026-05-12_06-59-43.mp4 → NAS ✓ 209K
rsync System Audio (output)_2026-05-12_07-00-12.mp4 → NAS ✓ 258K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-00-13.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_07-00-41.mp4 → NAS ✓ 253K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-00-43.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_07-01-09.mp4 → NAS ✓ 257K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-01-13.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-12_07-01-37.mp4 → NAS ✓ 252K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-01-42.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_07-02-06.mp4 → NAS ✓ 252K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-02-12.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_07-02-36.mp4 → NAS ✓ 251K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-02-42.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_07-03-04.mp4 → NAS ✓ 257K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-03-12.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_07-03-31.mp4 → NAS ✓ 264K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-03-42.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-12_07-04-00.mp4 → NAS ✓ 253K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-04-12.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_07-04-29.mp4 → NAS ✓ 236K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-04-42.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-12_07-04-59.mp4 → NAS ✓ 253K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-05-11.mp4 → NAS ✓ 204K
rsync System Audio (output)_2026-05-12_07-05-27.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-05-41.mp4 → NAS ✓ 201K
rsync System Audio (output)_2026-05-12_07-05-57.mp4 → NAS ✓ 244K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-06-11.mp4 → NAS ✓ 205K
rsync System Audio (output)_2026-05-12_07-06-26.mp4 → NAS ✓ 246K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-06-41.mp4 → NAS ✓ 199K
rsync System Audio (output)_2026-05-12_07-06-56.mp4 → NAS ✓ 247K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-07-11.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-12_07-07-24.mp4 → NAS ✓ 235K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-07-40.mp4 → NAS ✓ 206K
rsync System Audio (output)_2026-05-12_07-07-51.mp4 → NAS ✓ 220K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-08-10.mp4 → NAS ✓ 213K
rsync System Audio (output)_2026-05-12_07-08-20.mp4 → NAS ✓ 240K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-08-40.mp4 → NAS ✓ 225K
rsync System Audio (output)_2026-05-12_07-08-47.mp4 → NAS ✓ 231K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-09-10.mp4 → NAS ✓ 223K
rsync System Audio (output)_2026-05-12_07-09-17.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-09-40.mp4 → NAS ✓ 223K
rsync System Audio (output)_2026-05-12_07-09-45.mp4 → NAS ✓ 249K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-10-09.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-12_07-10-13.mp4 → NAS ✓ 227K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-10-39.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-12_07-10-42.mp4 → NAS ✓ 216K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-11-09.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-12_07-11-11.mp4 → NAS ✓ 221K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-11-39.mp4 → NAS ✓ 215K
rsync System Audio (output)_2026-05-12_07-12-09.mp4 → NAS ✓ 233K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-12-09.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-12_07-12-38.mp4 → NAS ✓ 234K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-12-39.mp4 → NAS ✓ 202K
rsync System Audio (output)_2026-05-12_07-13-08.mp4 → NAS ✓ 245K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-13-09.mp4 → NAS ✓ 208K
rsync System Audio (output)_2026-05-12_07-13-38.mp4 → NAS ✓ 106K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-13-39.mp4 → NAS ✓ 214K
rsync System Audio (output)_2026-05-12_07-14-07.mp4 → NAS ✓ 14K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-14-08.mp4 → NAS ✓ 211K
rsync System Audio (output)_2026-05-12_07-14-36.mp4 → NAS ✓ 44K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-14-38.mp4 → NAS ✓ 228K
rsync System Audio (output)_2026-05-12_07-15-06.mp4 → NAS ✓ 5.0K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-15-08.mp4 → NAS ✓ 210K
rsync System Audio (output)_2026-05-12_07-15-35.mp4 → NAS ✓ 5.0K
rsync LakyLak bose qc35 II (input)_2026-05-12_07-15-38.mp4 → NAS ✓ 226K
rsync System Audio (output)_2026-05-12_07-16-05.mp4 → NAS ✓ 5.0K
rsync MacBook Pro Microphone (input)_2026-05-12_07-16-29.mp4 → NAS ✓ 43K
rsync MacBook Pro Microphone (input)_2026-05-12_07-16-37.mp4 → NAS ✓ 16K
rsync System Audio (output)_2026-05-12_07-16-35.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-16-47.mp4 → NAS ✓ 10K
rsync System Audio (output)_2026-05-12_07-17-05.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-17-19.mp4 → NAS ✓ 27K
rsync System Audio (output)_2026-05-12_07-17-34.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-17-49.mp4 → NAS ✓ 56K
rsync System Audio (output)_2026-05-12_07-18-04.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-18-19.mp4 → NAS ✓ 66K
rsync System Audio (output)_2026-05-12_07-18-34.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-18-49.mp4 → NAS ✓ 137K
rsync System Audio (output)_2026-05-12_07-19-04.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-19-19.mp4 → NAS ✓ 148K
rsync System Audio (output)_2026-05-12_07-19-33.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-19-49.mp4 → NAS ✓ 93K
rsync System Audio (output)_2026-05-12_07-20-03.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-20-19.mp4 → NAS ✓ 110K
rsync System Audio (output)_2026-05-12_07-20-33.mp4 → NAS ✓ 83K
rsync soundcore AeroClip (input)_2026-05-12_07-20-49.mp4 → NAS ✓ 182K
rsync System Audio (output)_2026-05-12_07-21-03.mp4 → NAS ✓ 47K
rsync soundcore AeroClip (input)_2026-05-12_07-21-19.mp4 → NAS ✓ 128K
rsync System Audio (output)_2026-05-12_07-21-33.mp4 → NAS ✓ 223K
rsync soundcore AeroClip (input)_2026-05-12_07-21-49.mp4 → NAS ✓ 68K
rsync System Audio (output)_2026-05-12_07-22-02.mp4 → NAS ✓ 90K
rsync soundcore AeroClip (input)_2026-05-12_07-22-19.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-22-32.mp4 → NAS ✓ 30K
rsync soundcore AeroClip (input)_2026-05-12_07-22-49.mp4 → NAS ✓ 19K
rsync System Audio (output)_2026-05-12_07-23-02.mp4 → NAS ✓ 210K
rsync soundcore AeroClip (input)_2026-05-12_07-23-19.mp4 → NAS ✓ 27K
rsync System Audio (output)_2026-05-12_07-23-32.mp4 → NAS ✓ 84K
rsync soundcore AeroClip (input)_2026-05-12_07-23-49.mp4 → NAS ✓ 22K
rsync System Audio (output)_2026-05-12_07-24-02.mp4 → NAS ✓ 209K
rsync soundcore AeroClip (input)_2026-05-12_07-24-19.mp4 → NAS ✓ 33K
rsync System Audio (output)_2026-05-12_07-24-32.mp4 → NAS ✓ 103K
rsync soundcore AeroClip (input)_2026-05-12_07-24-49.mp4 → NAS ✓ 55K
rsync System Audio (output)_2026-05-12_07-25-01.mp4 → NAS ✓ 139K
rsync soundcore AeroClip (input)_2026-05-12_07-25-19.mp4 → NAS ✓ 20K
rsync System Audio (output)_2026-05-12_07-25-31.mp4 → NAS ✓ 135K
rsync soundcore AeroClip (input)_2026-05-12_07-25-49.mp4 → NAS ✓ 13K
rsync System Audio (output)_2026-05-12_07-26-01.mp4 → NAS ✓ 174K
rsync soundcore AeroClip (input)_2026-05-12_07-26-19.mp4 → NAS ✓ 14K
rsync System Audio (output)_2026-05-12_07-26-31.mp4 → NAS ✓ 170K
rsync soundcore AeroClip (input)_2026-05-12_07-26-49.mp4 → NAS ✓ 29K
rsync System Audio (output)_2026-05-12_07-27-01.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_07-27-19.mp4 → NAS ✓ 23K
rsync System Audio (output)_2026-05-12_07-27-31.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-27-49.mp4 → NAS ✓ 44K
rsync System Audio (output)_2026-05-12_07-28-01.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-28-19.mp4 → NAS ✓ 24K
rsync System Audio (output)_2026-05-12_07-28-31.mp4 → NAS ✓ 42K
rsync soundcore AeroClip (input)_2026-05-12_07-28-49.mp4 → NAS ✓ 35K
rsync System Audio (output)_2026-05-12_07-29-00.mp4 → NAS ✓ 63K
rsync soundcore AeroClip (input)_2026-05-12_07-29-19.mp4 → NAS ✓ 24K
rsync System Audio (output)_2026-05-12_07-29-30.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-29-49.mp4 → NAS ✓ 18K
rsync System Audio (output)_2026-05-12_07-30-00.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-30-19.mp4 → NAS ✓ 42K
rsync System Audio (output)_2026-05-12_07-30-30.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-30-49.mp4 → NAS ✓ 36K
rsync System Audio (output)_2026-05-12_07-31-00.mp4 → NAS ✓ 62K
rsync soundcore AeroClip (input)_2026-05-12_07-31-19.mp4 → NAS ✓ 21K
rsync System Audio (output)_2026-05-12_07-31-30.mp4 → NAS ✓ 134K
rsync soundcore AeroClip (input)_2026-05-12_07-31-49.mp4 → NAS ✓ 18K
rsync System Audio (output)_2026-05-12_07-31-59.mp4 → NAS ✓ 164K
rsync soundcore AeroClip (input)_2026-05-12_07-32-19.mp4 → NAS ✓ 41K
rsync System Audio (output)_2026-05-12_07-32-29.mp4 → NAS ✓ 28K
rsync soundcore AeroClip (input)_2026-05-12_07-32-49.mp4 → NAS ✓ 36K
rsync System Audio (output)_2026-05-12_07-32-59.mp4 → NAS ✓ 33K
rsync soundcore AeroClip (input)_2026-05-12_07-33-18.mp4 → NAS ✓ 19K
rsync System Audio (output)_2026-05-12_07-33-29.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-33-48.mp4 → NAS ✓ 79K
rsync System Audio (output)_2026-05-12_07-33-58.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-34-18.mp4 → NAS ✓ 82K
rsync System Audio (output)_2026-05-12_07-34-28.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-34-48.mp4 → NAS ✓ 91K
rsync System Audio (output)_2026-05-12_07-34-58.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-35-18.mp4 → NAS ✓ 71K
rsync System Audio (output)_2026-05-12_07-35-28.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-35-48.mp4 → NAS ✓ 45K
rsync System Audio (output)_2026-05-12_07-35-58.mp4 → NAS ✓ 158K
rsync soundcore AeroClip (input)_2026-05-12_07-36-18.mp4 → NAS ✓ 23K
rsync System Audio (output)_2026-05-12_07-36-27.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-36-48.mp4 → NAS ✓ 22K
rsync System Audio (output)_2026-05-12_07-36-57.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-37-18.mp4 → NAS ✓ 33K
rsync System Audio (output)_2026-05-12_07-37-27.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-37-48.mp4 → NAS ✓ 19K
rsync System Audio (output)_2026-05-12_07-37-57.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-38-18.mp4 → NAS ✓ 17K
rsync System Audio (output)_2026-05-12_07-38-26.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-38-48.mp4 → NAS ✓ 40K
rsync System Audio (output)_2026-05-12_07-38-56.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-39-18.mp4 → NAS ✓ 25K
rsync System Audio (output)_2026-05-12_07-39-26.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-39-48.mp4 → NAS ✓ 32K
rsync System Audio (output)_2026-05-12_07-39-55.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-40-18.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-40-25.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 → NAS ✓ 14K
rsync System Audio (output)_2026-05-12_07-40-55.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-41-18.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-41-24.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-41-48.mp4 → NAS ✓ 28K
rsync System Audio (output)_2026-05-12_07-41-54.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-42-18.mp4 → NAS ✓ 45K
rsync System Audio (output)_2026-05-12_07-42-24.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-42-48.mp4 → NAS ✓ 67K
rsync System Audio (output)_2026-05-12_07-42-54.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-43-18.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-43-23.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-43-47.mp4 → NAS ✓ 16K
rsync System Audio (output)_2026-05-12_07-43-53.mp4 → NAS ✓ 5.0K
rsync System Audio (output)_2026-05-12_07-44-23.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-44-47.mp4 → NAS ✓ 9.0K
rsync System Audio (output)_2026-05-12_07-44-53.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-45-19.mp4 → NAS ✓ 37K
rsync System Audio (output)_2026-05-12_07-45-22.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-45-49.mp4 → NAS ✓ 23K
rsync System Audio (output)_2026-05-12_07-45-51.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-46-19.mp4 → NAS ✓ 7.0K
rsync System Audio (output)_2026-05-12_07-46-21.mp4 → NAS ✓ 5.0K
rsync System Audio (output)_2026-05-12_07-46-51.mp4 → NAS ✓ 5.0K
rsync System Audio (output)_2026-05-12_07-47-21.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-47-19.mp4 → NAS ✓ 7.0K
rsync System Audio (output)_2026-05-12_07-47-51.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-47-51.mp4 → NAS ✓ 16K
rsync System Audio (output)_2026-05-12_07-48-21.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-48-21.mp4 → NAS ✓ 15K
rsync System Audio (output)_2026-05-12_07-48-50.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-48-51.mp4 → NAS ✓ 14K
rsync System Audio (output)_2026-05-12_07-49-20.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-49-21.mp4 → NAS ✓ 11K
rsync System Audio (output)_2026-05-12_07-49-50.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-49-51.mp4 → NAS ✓ 6.0K
rsync System Audio (output)_2026-05-12_07-50-20.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-50-27.mp4 → NAS ✓ 25K
rsync System Audio (output)_2026-05-12_07-50-50.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-50-59.mp4 → NAS ✓ 10K
rsync System Audio (output)_2026-05-12_07-51-19.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-51-29.mp4 → NAS ✓ 12K
rsync System Audio (output)_2026-05-12_07-51-48.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-51-59.mp4 → NAS ✓ 17K
rsync System Audio (output)_2026-05-12_07-52-18.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-52-29.mp4 → NAS ✓ 17K
rsync System Audio (output)_2026-05-12_07-52-48.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-52-59.mp4 → NAS ✓ 13K
rsync System Audio (output)_2026-05-12_07-53-18.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-53-29.mp4 → NAS ✓ 18K
rsync System Audio (output)_2026-05-12_07-53-48.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-53-59.mp4 → NAS ✓ 9.0K
rsync System Audio (output)_2026-05-12_07-54-17.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-54-29.mp4 → NAS ✓ 7.0K
rsync System Audio (output)_2026-05-12_07-54-47.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-54-59.mp4 → NAS ✓ 12K
rsync System Audio (output)_2026-05-12_07-55-17.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-55-29.mp4 → NAS ✓ 38K
rsync System Audio (output)_2026-05-12_07-55-47.mp4 → NAS ✓ 170K
rsync soundcore AeroClip (input)_2026-05-12_07-55-58.mp4 → NAS ✓ 218K
rsync System Audio (output)_2026-05-12_07-56-16.mp4 → NAS ✓ 194K
rsync soundcore AeroClip (input)_2026-05-12_07-56-28.mp4 → NAS ✓ 207K
rsync System Audio (output)_2026-05-12_07-56-45.mp4 → NAS ✓ 196K
rsync soundcore AeroClip (input)_2026-05-12_07-56-58.mp4 → NAS ✓ 159K
rsync System Audio (output)_2026-05-12_07-57-15.mp4 → NAS ✓ 230K
rsync soundcore AeroClip (input)_2026-05-12_07-57-28.mp4 → NAS ✓ 107K
rsync System Audio (output)_2026-05-12_07-57-44.mp4 → NAS ✓ 238K
rsync soundcore AeroClip (input)_2026-05-12_07-57-58.mp4 → NAS ✓ 94K
rsync System Audio (output)_2026-05-12_07-58-14.mp4 → NAS ✓ 229K
rsync soundcore AeroClip (input)_2026-05-12_07-58-28.mp4 → NAS ✓ 107K
rsync System Audio (output)_2026-05-12_07-58-44.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_07-58-58.mp4 → NAS ✓ 84K
rsync System Audio (output)_2026-05-12_07-59-13.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-59-27.mp4 → NAS ✓ 52K
rsync System Audio (output)_2026-05-12_07-59-43.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_07-59-57.mp4 → NAS ✓ 65K
rsync System Audio (output)_2026-05-12_08-00-13.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-00-27.mp4 → NAS ✓ 170K
rsync System Audio (output)_2026-05-12_08-00-43.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-00-57.mp4 → NAS ✓ 163K
rsync System Audio (output)_2026-05-12_08-01-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-01-27.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-12_08-01-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-01-57.mp4 → NAS ✓ 219K
rsync System Audio (output)_2026-05-12_08-02-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-02-27.mp4 → NAS ✓ 161K
rsync System Audio (output)_2026-05-12_08-02-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-02-57.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-12_08-03-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-03-28.mp4 → NAS ✓ 124K
rsync System Audio (output)_2026-05-12_08-03-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-03-58.mp4 → NAS ✓ 181K
rsync System Audio (output)_2026-05-12_08-04-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-04-27.mp4 → NAS ✓ 248K
rsync System Audio (output)_2026-05-12_08-04-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-04-57.mp4 → NAS ✓ 247K
rsync System Audio (output)_2026-05-12_08-05-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-05-27.mp4 → NAS ✓ 239K
rsync System Audio (output)_2026-05-12_08-05-42.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-05-57.mp4 → NAS ✓ 250K
rsync System Audio (output)_2026-05-12_08-06-12.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-06-27.mp4 → NAS ✓ 232K
rsync System Audio (output)_2026-05-12_08-06-41.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-06-57.mp4 → NAS ✓ 247K
rsync System Audio (output)_2026-05-12_08-07-11.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-07-27.mp4 → NAS ✓ 238K
rsync System Audio (output)_2026-05-12_08-07-41.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-07-57.mp4 → NAS ✓ 136K
rsync System Audio (output)_2026-05-12_08-08-11.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-08-27.mp4 → NAS ✓ 177K
rsync System Audio (output)_2026-05-12_08-08-41.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-08-57.mp4 → NAS ✓ 220K
rsync System Audio (output)_2026-05-12_08-09-11.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_08-09-27.mp4 → NAS ✓ 219K
rsync soundcore AeroClip (input)_2026-05-12_08-09-57.mp4 → NAS ✓ 245K
rsync soundcore AeroClip (input)_2026-05-12_08-12-10.mp4 → NAS ✓ 58K
rsync soundcore AeroClip (input)_2026-05-12_08-12-42.mp4 → NAS ✓ 117K
rsync soundcore AeroClip (input)_2026-05-12_08-13-12.mp4 → NAS ✓ 67K
rsync soundcore AeroClip (input)_2026-05-12_08-13-42.mp4 → NAS ✓ 64K
rsync soundcore AeroClip (input)_2026-05-12_08-14-12.mp4 → NAS ✓ 92K
rsync soundcore AeroClip (input)_2026-05-12_08-14-42.mp4 → NAS ✓ 60K
rsync soundcore AeroClip (input)_2026-05-12_08-15-12.mp4 → NAS ✓ 64K
rsync soundcore AeroClip (input)_2026-05-12_08-15-42.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_08-16-12.mp4 → NAS ✓ 17K
rsync soundcore AeroClip (input)_2026-05-12_08-16-42.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_08-17-12.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_08-17-42.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-18-12.mp4 → NAS ✓ 7.0K
rsync soundcore AeroClip (input)_2026-05-12_08-19-13.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_08-19-45.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_08-20-15.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_08-20-45.mp4 → NAS ✓ 14K
rsync soundcore AeroClip (input)_2026-05-12_08-21-15.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_08-21-45.mp4 → NAS ✓ 18K
rsync soundcore AeroClip (input)_2026-05-12_08-22-15.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-22-45.mp4 → NAS ✓ 17K
rsync soundcore AeroClip (input)_2026-05-12_08-23-15.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_08-23-45.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-24-15.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_08-24-45.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_08-25-15.mp4 → NAS ✓ 28K
rsync soundcore AeroClip (input)_2026-05-12_08-25-45.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_08-26-28.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_08-27-00.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_08-27-30.mp4 → NAS ✓ 38K
rsync soundcore AeroClip (input)_2026-05-12_08-28-00.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_08-28-30.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_08-29-00.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_08-29-30.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_08-30-00.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_08-30-30.mp4 → NAS ✓ 29K
rsync soundcore AeroClip (input)_2026-05-12_08-31-00.mp4 → NAS ✓ 60K
rsync soundcore AeroClip (input)_2026-05-12_08-31-30.mp4 → NAS ✓ 124K
rsync soundcore AeroClip (input)_2026-05-12_08-32-00.mp4 → NAS ✓ 73K
rsync soundcore AeroClip (input)_2026-05-12_08-32-30.mp4 → NAS ✓ 39K
rsync soundcore AeroClip (input)_2026-05-12_08-32-59.mp4 → NAS ✓ 52K
rsync soundcore AeroClip (input)_2026-05-12_08-33-29.mp4 → NAS ✓ 127K
rsync soundcore AeroClip (input)_2026-05-12_08-33-59.mp4 → NAS ✓ 139K
rsync soundcore AeroClip (input)_2026-05-12_08-34-29.mp4 → NAS ✓ 169K
rsync soundcore AeroClip (input)_2026-05-12_08-34-59.mp4 → NAS ✓ 85K
rsync soundcore AeroClip (input)_2026-05-12_08-35-29.mp4 → NAS ✓ 30K
rsync soundcore AeroClip (input)_2026-05-12_08-35-59.mp4 → NAS ✓ 34K
rsync soundcore AeroClip (input)_2026-05-12_08-36-29.mp4 → NAS ✓ 47K
rsync soundcore AeroClip (input)_2026-05-12_08-37-10.mp4 → NAS ✓ 10K
rsync soundcore AeroClip (input)_2026-05-12_08-37-42.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_08-38-12.mp4 → NAS ✓ 123K
rsync soundcore AeroClip (input)_2026-05-12_08-38-42.mp4 → NAS ✓ 164K
rsync soundcore AeroClip (input)_2026-05-12_08-39-12.mp4 → NAS ✓ 179K
rsync soundcore AeroClip (input)_2026-05-12_08-39-42.mp4 → NAS ✓ 176K
rsync soundcore AeroClip (input)_2026-05-12_08-40-12.mp4 → NAS ✓ 173K
rsync soundcore AeroClip (input)_2026-05-12_08-40-42.mp4 → NAS ✓ 157K
rsync soundcore AeroClip (input)_2026-05-12_08-41-12.mp4 → NAS ✓ 101K
rsync soundcore AeroClip (input)_2026-05-12_08-41-42.mp4 → NAS ✓ 119K
rsync soundcore AeroClip (input)_2026-05-12_08-42-12.mp4 → NAS ✓ 79K
rsync soundcore AeroClip (input)_2026-05-12_08-42-42.mp4 → NAS ✓ 14K
rsync soundcore AeroClip (input)_2026-05-12_08-43-12.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_08-43-42.mp4 → NAS ✓ 25K
rsync soundcore AeroClip (input)_2026-05-12_08-44-12.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-44-42.mp4 → NAS ✓ 105K
rsync soundcore AeroClip (input)_2026-05-12_08-45-12.mp4 → NAS ✓ 160K
rsync soundcore AeroClip (input)_2026-05-12_08-45-41.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_08-46-11.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_08-46-41.mp4 → NAS ✓ 12K
rsync soundcore AeroClip (input)_2026-05-12_08-47-11.mp4 → NAS ✓ 23K
rsync soundcore AeroClip (input)_2026-05-12_08-47-41.mp4 → NAS ✓ 47K
rsync soundcore AeroClip (input)_2026-05-12_08-48-11.mp4 → NAS ✓ 83K
rsync soundcore AeroClip (input)_2026-05-12_08-48-41.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_08-49-11.mp4 → NAS ✓ 40K
rsync soundcore AeroClip (input)_2026-05-12_08-49-41.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_08-50-11.mp4 → NAS ✓ 17K
rsync soundcore AeroClip (input)_2026-05-12_08-50-41.mp4 → NAS ✓ 125K
rsync soundcore AeroClip (input)_2026-05-12_08-51-11.mp4 → NAS ✓ 69K
rsync soundcore AeroClip (input)_2026-05-12_08-51-41.mp4 → NAS ✓ 67K
rsync soundcore AeroClip (input)_2026-05-12_08-52-11.mp4 → NAS ✓ 57K
rsync soundcore AeroClip (input)_2026-05-12_08-52-41.mp4 → NAS ✓ 38K
rsync soundcore AeroClip (input)_2026-05-12_08-53-11.mp4 → NAS ✓ 29K
rsync soundcore AeroClip (input)_2026-05-12_08-53-41.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_08-54-11.mp4 → NAS ✓ 29K
rsync soundcore AeroClip (input)_2026-05-12_08-54-41.mp4 → NAS ✓ 14K
rsync soundcore AeroClip (input)_2026-05-12_08-55-11.mp4 → NAS ✓ 39K
rsync soundcore AeroClip (input)_2026-05-12_08-55-41.mp4 → NAS ✓ 25K
rsync soundcore AeroClip (input)_2026-05-12_08-56-11.mp4 → NAS ✓ 31K
rsync soundcore AeroClip (input)_2026-05-12_08-56-41.mp4 → NAS ✓ 24K
rsync soundcore AeroClip (input)_2026-05-12_08-57-11.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_08-57-41.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_08-58-11.mp4 → NAS ✓ 18K
rsync soundcore AeroClip (input)_2026-05-12_08-58-41.mp4 → NAS ✓ 35K
rsync soundcore AeroClip (input)_2026-05-12_08-59-11.mp4 → NAS ✓ 35K
rsync soundcore AeroClip (input)_2026-05-12_08-59-41.mp4 → NAS ✓ 19K
rsync soundcore AeroClip (input)_2026-05-12_09-00-11.mp4 → NAS ✓ 19K
rsync soundcore AeroClip (input)_2026-05-12_09-00-41.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_09-01-11.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_09-01-41.mp4 → NAS ✓ 27K
rsync soundcore AeroClip (input)_2026-05-12_09-02-11.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-03-07.mp4 → NAS ✓ 32K
rsync soundcore AeroClip (input)_2026-05-12_09-03-39.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-04-09.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_09-04-39.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-05-12.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_09-05-44.mp4 → NAS ✓ 28K
rsync soundcore AeroClip (input)_2026-05-12_09-06-14.mp4 → NAS ✓ 60K
rsync soundcore AeroClip (input)_2026-05-12_09-06-44.mp4 → NAS ✓ 43K
rsync soundcore AeroClip (input)_2026-05-12_09-07-14.mp4 → NAS ✓ 42K
rsync soundcore AeroClip (input)_2026-05-12_09-07-44.mp4 → NAS ✓ 37K
rsync soundcore AeroClip (input)_2026-05-12_09-08-14.mp4 → NAS ✓ 26K
rsync soundcore AeroClip (input)_2026-05-12_09-08-44.mp4 → NAS ✓ 36K
rsync soundcore AeroClip (input)_2026-05-12_09-09-14.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-09-44.mp4 → NAS ✓ 7.0K
rsync soundcore AeroClip (input)_2026-05-12_09-10-14.mp4 → NAS ✓ 10K
rsync soundcore AeroClip (input)_2026-05-12_09-10-44.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_09-11-14.mp4 → NAS ✓ 7.0K
rsync soundcore AeroClip (input)_2026-05-12_09-11-44.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-12-14.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_09-12-43.mp4 → NAS ✓ 35K
rsync soundcore AeroClip (input)_2026-05-12_09-13-13.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_09-13-43.mp4 → NAS ✓ 40K
rsync soundcore AeroClip (input)_2026-05-12_09-14-13.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_09-14-43.mp4 → NAS ✓ 24K
rsync soundcore AeroClip (input)_2026-05-12_09-15-13.mp4 → NAS ✓ 29K
rsync soundcore AeroClip (input)_2026-05-12_09-15-43.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_09-16-13.mp4 → NAS ✓ 26K
rsync soundcore AeroClip (input)_2026-05-12_09-16-43.mp4 → NAS ✓ 24K
rsync soundcore AeroClip (input)_2026-05-12_09-17-13.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_09-17-43.mp4 → NAS ✓ 33K
rsync soundcore AeroClip (input)_2026-05-12_09-18-13.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_09-18-43.mp4 → NAS ✓ 30K
rsync soundcore AeroClip (input)_2026-05-12_09-19-12.mp4 → NAS ✓ 12K
rsync soundcore AeroClip (input)_2026-05-12_09-19-42.mp4 → NAS ✓ 8.0K
rsync soundcore AeroClip (input)_2026-05-12_09-20-18.mp4 → NAS ✓ 12K
rsync soundcore AeroClip (input)_2026-05-12_09-20-50.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-21-20.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-21-59.mp4 → NAS ✓ 9.0K
rsync soundcore AeroClip (input)_2026-05-12_09-22-31.mp4 → NAS ✓ 12K
rsync soundcore AeroClip (input)_2026-05-12_09-23-01.mp4 → NAS ✓ 28K
rsync soundcore AeroClip (input)_2026-05-12_09-24-02.mp4 → NAS ✓ 5.0K
rsync soundcore AeroClip (input)_2026-05-12_09-24-34.mp4 → NAS ✓ 30K
rsync soundcore AeroClip (input)_2026-05-12_09-25-04.mp4 → NAS ✓ 53K
rsync soundcore AeroClip (input)_2026-05-12_09-25-34.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_09-26-04.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-26-34.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_09-27-04.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_09-27-34.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_09-28-04.mp4 → NAS ✓ 19K
rsync soundcore AeroClip (input)_2026-05-12_09-28-34.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_09-29-04.mp4 → NAS ✓ 15K
rsync soundcore AeroClip (input)_2026-05-12_09-29-34.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_09-30-04.mp4 → NAS ✓ 13K
rsync soundcore AeroClip (input)_2026-05-12_09-30-34.mp4 → NAS ✓ 21K
rsync soundcore AeroClip (input)_2026-05-12_09-31-04.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_09-31-33.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-32-03.mp4 → NAS ✓ 16K
rsync soundcore AeroClip (input)_2026-05-12_09-32-33.mp4 → NAS ✓ 55K
rsync soundcore AeroClip (input)_2026-05-12_09-33-03.mp4 → NAS ✓ 22K
rsync soundcore AeroClip (input)_2026-05-12_09-33-33.mp4 → NAS ✓ 11K
rsync soundcore AeroClip (input)_2026-05-12_09-34-03.mp4 → NAS ✓ 17K
rsync soundcore AeroClip (input)_2026-05-12_09-34-33.mp4 → NAS ✓ 63K
rsync soundcore AeroClip (input)_2026-05-12_09-35-03.mp4 → NAS ✓ 57K
rsync soundcore AeroClip (input)_2026-05-12_09-35-33.mp4 → NAS ✓ 64K
rsync soundcore AeroClip (input)_2026-05-12_09-36-03.mp4 → NAS ✓ 70K
rsync soundcore AeroClip (input)_2026-05-12_09-36-33.mp4 → NAS ✓ 56K
rsync soundcore AeroClip (input)_2026-05-12_09-37-03.mp4 → NAS ✓ 86K
rsync soundcore AeroClip (input)_2026-05-12_09-37-33.mp4 → NAS ✓ 66K
rsync soundcore AeroClip (input)_2026-05-12_09-38-03.mp4 → NAS ✓ 20K
rsync soundcore AeroClip (input)_2026-05-12_09-38-33.mp4 → NAS ✓ 19K
rsync soundcore AeroClip (input)_2026-05-12_09-39-28.mp4 → NAS ✓ 34K
rsync soundcore AeroClip (input)_2026-05-12_09-40-00.mp4 → NAS ✓ 53K
rsync soundcore AeroClip (input)_2026-05-12_09-40-30.mp4 → NAS ✓ 50K
rsync MacBook Pro Microphone (input)_2026-05-12_09-41-30.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-42-02.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-42-32.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-43-02.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_09-43-32.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_09-44-02.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_09-44-32.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_09-45-02.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-45-32.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-12_09-46-02.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-46-32.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-47-01.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-47-31.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-48-01.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-48-31.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-49-01.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_09-49-31.mp4 → NAS ✓ 197K
rsync MacBook Pro Microphone (input)_2026-05-12_09-50-01.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_09-50-31.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_09-51-01.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_09-51-31.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-52-01.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-52-31.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-53-00.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_09-53-30.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-54-00.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_09-54-30.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-55-00.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_09-55-30.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-01-32.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-12_10-02-01.mp4 → NAS ✓ 221K
rsync MacBook Pro Microphone (input)_2026-05-12_10-02-30.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-12_10-03-00.mp4 → NAS ✓ 208K
rsync MacBook Pro Microphone (input)_2026-05-12_10-03-29.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-03-59.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-04-29.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-04-59.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-05-29.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-05-59.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-06-29.mp4 → NAS ✓ 197K
rsync MacBook Pro Microphone (input)_2026-05-12_10-06-59.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_10-07-29.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_10-07-59.mp4 → NAS ✓ 198K
rsync MacBook Pro Microphone (input)_2026-05-12_10-08-28.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_10-08-58.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-09-28.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_10-09-58.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-10-28.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_10-10-58.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-11-28.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-11-58.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-12-28.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-12-58.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-13-28.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-13-58.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-14-28.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-14-58.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-15-28.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-15-57.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-16-27.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-16-57.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-17-27.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-17-57.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-18-27.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-18-57.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-19-27.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-19-57.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-28-53.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-29-24.mp4 → NAS ✓ 215K
rsync MacBook Pro Microphone (input)_2026-05-12_10-29-53.mp4 → NAS ✓ 216K
rsync MacBook Pro Microphone (input)_2026-05-12_10-30-23.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-30-53.mp4 → NAS ✓ 218K
rsync MacBook Pro Microphone (input)_2026-05-12_10-31-23.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-31-53.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-32-23.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-32-53.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-33-23.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-33-53.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-34-22.mp4 → NAS ✓ 199K
rsync MacBook Pro Microphone (input)_2026-05-12_10-34-52.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_10-35-22.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_10-35-52.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-36-22.mp4 → NAS ✓ 226K
rsync MacBook Pro Microphone (input)_2026-05-12_10-36-52.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-37-22.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-37-52.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-38-22.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-38-52.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-39-22.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-39-51.mp4 → NAS ✓ 213K
rsync MacBook Pro Microphone (input)_2026-05-12_10-40-21.mp4 → NAS ✓ 218K
rsync MacBook Pro Microphone (input)_2026-05-12_10-40-51.mp4 → NAS ✓ 212K
rsync MacBook Pro Microphone (input)_2026-05-12_10-41-21.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-41-51.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-42-21.mp4 → NAS ✓ 219K
rsync MacBook Pro Microphone (input)_2026-05-12_10-42-51.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-43-21.mp4 → NAS ✓ 223K
rsync MacBook Pro Microphone (input)_2026-05-12_10-43-50.mp4 → NAS ✓ 233K
rsync MacBook Pro Microphone (input)_2026-05-12_10-44-20.mp4 → NAS ✓ 222K
rsync MacBook Pro Microphone (input)_2026-05-12_10-44-50.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-45-20.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-45-50.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-12_10-46-20.mp4 → NAS ✓ 210K
rsync MacBook Pro Microphone (input)_2026-05-12_10-46-50.mp4 → NAS ✓ 211K
rsync MacBook Pro Microphone (input)_2026-05-12_10-47-19.mp4 → NAS ✓ 209K
rsync MacBook Pro Microphone (input)_2026-05-12_10-47-49.mp4 → NAS ✓ 207K
rsync MacBook Pro Microphone (input)_2026-05-12_10-48-19.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-48-49.mp4 → NAS ✓ 205K
rsync MacBook Pro Microphone (input)_2026-05-12_10-49-19.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-49-49.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-50-19.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-50-49.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-51-19.mp4 → NAS ✓ 198K
rsync MacBook Pro Microphone (input)_2026-05-12_10-51-49.mp4 → NAS ✓ 198K
rsync MacBook Pro Microphone (input)_2026-05-12_10-52-19.mp4 → NAS ✓ 206K
rsync MacBook Pro Microphone (input)_2026-05-12_10-52-49.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-53-19.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-53-48.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-54-18.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_10-54-48.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_10-55-18.mp4 → NAS ✓ 203K
rsync MacBook Pro Microphone (input)_2026-05-12_10-55-48.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-56-18.mp4 → NAS ✓ 202K
rsync MacBook Pro Microphone (input)_2026-05-12_10-56-48.mp4 → NAS ✓ 201K
rsync MacBook Pro Microphone (input)_2026-05-12_10-57-18.mp4 → NAS ✓ 200K
rsync MacBook Pro Microphone (input)_2026-05-12_10-57-48.mp4 → NAS ✓ 198K
rsync MacBook Pro Microphone (input)_2026-05-12_10-58-18.mp4 → NAS ✓ 204K
rsync MacBook Pro Microphone (input)_2026-05-12_10-58-48.mp4 → NAS ✓ 208K
...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38771
|
1437
|
48
|
2026-05-14T06:28:34.223499+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740114223_m1.jpg...
|
Slack
|
Activity - Jiminny Inc - 4 new items - Slack
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
All, 4 unread
DMs
Add new tab
Stefka Stoyanova
DM
Mark as unread
Clear
More actions
здарсти Лукаш, ще направиш ли стори да ъпгрейднем Pipedrive SDK (ако може да напишеш от коя на коя версия)
…
Yesterday
Mario Georgiev
DM
Yesterday
тенк ю вери мъч, махнах му crm seat-a и има достъп, ще го имам напредвид вече че явно бие такава грешка когато фрии акаунта expir-ne или нещо подобно и няма особен workaround
Jira Cloud
App
Yesterday
@Stefka Stoyanova
@Stefka Stoyanova
assigned a Technical Story from you ⟶ Unassigned
…
Vasil Vasilev
DM
Replied
Yesterday
добреее, значи трябва да има процес, който чете от redis и налива в Elastic Search
Review Toast
App
Yesterday
PR review requested by @stefka-jiminny on @nikolaybiaivanov's PR
Nikolay Ivanov
DM
Yesterday
ще станат конфликти
James Graham
DM
Yesterday
Cheers!
Tuesday, May 12th
Stoyan Tanev
DM
Replied
Tuesday
сега всичко е 6
Vasil Vasilev
Reacted in
platform-inner-team
Tuesday
You:
може ли един approve
https://github.com/jiminny/app/pull/12024
https://github.com/jiminny/app/pull/12024
1 reaction, react with white check mark emoji
1
Galya Dimitrova
DM
Tuesday
И другата седмица имаме презднтации пред борда в Лондон и съм до никъде
Galya Dimitrova
Reacted in
DM
Tuesday
You:
ако трябва да се пипне и в кода ще си направя тикет
1 reaction, react with +1 emoji
1
Steliyan Georgiev
DM
Tuesday
ще го видя
Steliyan Georgiev
Reacted in
DM
Tuesday
You:
ето го и репорт
…
1 reaction, react with +1 emoji
1
Petko Kashinski
DM
Tuesday
Huddle ?
Select a notification to view the details.
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"All, 4 unread","depth":19,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"DMs","depth":19,"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add new tab","depth":20,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Mark as unread","depth":23,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clear","depth":23,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":23,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"здарсти Лукаш, ще направиш ли стори да ъпгрейднем Pipedrive SDK (ако може да напишеш от коя на коя версия)","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"…","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Mario Georgiev","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"тенк ю вери мъч, махнах му crm seat-a и има достъп, ще го имам напредвид вече че явно бие такава грешка когато фрии акаунта expir-ne или нещо подобно и няма особен workaround","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"App","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"@Stefka Stoyanova","depth":23,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"@Stefka Stoyanova","depth":24,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"assigned a Technical Story from you ⟶ Unassigned","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"…","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Replied","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"добреее, значи трябва да има процес, който чете от redis и налива в Elastic Search","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Review Toast","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"App","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"PR review requested by @stefka-jiminny on @nikolaybiaivanov's PR","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ще станат конфликти","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":22,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Cheers!","depth":23,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday, May 12th","depth":21,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":22,"bounds":{"left":0.5798611,"top":0.0,"width":0.060416665,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.5798611,"top":0.0,"width":0.015277778,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Replied","depth":22,"bounds":{"left":0.6631944,"top":0.0,"width":0.027083334,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.69861114,"top":0.0,"width":0.031944446,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"сега всичко е 6","depth":23,"bounds":{"left":0.54930556,"top":0.0,"width":0.072222225,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":22,"bounds":{"left":0.5798611,"top":0.0,"width":0.055555556,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Reacted in","depth":22,"bounds":{"left":0.5798611,"top":0.0,"width":0.041666668,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":22,"bounds":{"left":0.62569445,"top":0.0,"width":0.056944445,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.69861114,"top":0.0,"width":0.031944446,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"You:","depth":23,"bounds":{"left":0.54930556,"top":0.0,"width":0.02013889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"може ли един approve","depth":23,"bounds":{"left":0.5715278,"top":0.0,"width":0.110416666,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/app/pull/12024","depth":23,"bounds":{"left":0.54930556,"top":0.0,"width":0.18125,"height":0.0011111111},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/12024","depth":24,"bounds":{"left":0.54930556,"top":0.0,"width":0.18125,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with white check mark emoji","depth":23,"bounds":{"left":0.54930556,"top":0.0,"width":0.029861111,"height":0.0011111111},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":24,"bounds":{"left":0.56875,"top":0.0,"width":0.0048611113,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":22,"bounds":{"left":0.5798611,"top":0.0,"width":0.07361111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.5798611,"top":0.0,"width":0.015277778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.69861114,"top":0.0,"width":0.031944446,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"И другата седмица имаме презднтации пред борда в Лондон и съм до никъде","depth":23,"bounds":{"left":0.54930556,"top":0.0,"width":0.17986111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":22,"bounds":{"left":0.5798611,"top":0.0,"width":0.07361111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Reacted in","depth":22,"bounds":{"left":0.5798611,"top":0.0,"width":0.041666668,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.62291664,"top":0.0,"width":0.015277778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.69861114,"top":0.0,"width":0.031944446,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"You:","depth":23,"bounds":{"left":0.54930556,"top":0.0,"width":0.02013889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако трябва да се пипне и в кода ще си направя тикет","depth":23,"bounds":{"left":0.54930556,"top":0.0,"width":0.17777778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with +1 emoji","depth":23,"bounds":{"left":0.54930556,"top":0.0,"width":0.029861111,"height":0.0011111111},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":24,"bounds":{"left":0.56875,"top":0.0,"width":0.0048611113,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"bounds":{"left":0.5798611,"top":0.0,"width":0.07986111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.5798611,"top":0.0,"width":0.015277778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.69861114,"top":0.0,"width":0.031944446,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ще го видя","depth":23,"bounds":{"left":0.54930556,"top":0.0,"width":0.05277778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"bounds":{"left":0.5798611,"top":0.0,"width":0.07986111,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Reacted in","depth":22,"bounds":{"left":0.5798611,"top":0.0,"width":0.041666668,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.62291664,"top":0.0,"width":0.015277778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.69861114,"top":0.0,"width":0.031944446,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"You:","depth":23,"bounds":{"left":0.54930556,"top":0.0,"width":0.02013889,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ето го и репорт","depth":23,"bounds":{"left":0.5715278,"top":0.0,"width":0.07430556,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"…","depth":23,"bounds":{"left":0.6458333,"top":0.0,"width":0.008333334,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with +1 emoji","depth":23,"bounds":{"left":0.54930556,"top":0.0,"width":0.029861111,"height":0.0011111111},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":24,"bounds":{"left":0.56875,"top":0.0,"width":0.0048611113,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":22,"bounds":{"left":0.5798611,"top":0.0,"width":0.072222225,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.5798611,"top":0.0,"width":0.015277778,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.69861114,"top":0.0,"width":0.031944446,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddle ?","depth":23,"bounds":{"left":0.54930556,"top":0.0,"width":0.04097222,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Select a notification to view the details.","depth":17,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"bounds":{"left":0.4798611,"top":0.0,"width":0.047916666,"height":0.0011111111},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"bounds":{"left":0.4798611,"top":0.0,"width":0.036805555,"height":0.0011111111},"on_screen":true,"role_description":"text"}]...
|
8367143638802948576
|
-5949560164595188541
|
app_switch
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
All, 4 unread
DMs
Add new tab
Stefka Stoyanova
DM
Mark as unread
Clear
More actions
здарсти Лукаш, ще направиш ли стори да ъпгрейднем Pipedrive SDK (ако може да напишеш от коя на коя версия)
…
Yesterday
Mario Georgiev
DM
Yesterday
тенк ю вери мъч, махнах му crm seat-a и има достъп, ще го имам напредвид вече че явно бие такава грешка когато фрии акаунта expir-ne или нещо подобно и няма особен workaround
Jira Cloud
App
Yesterday
@Stefka Stoyanova
@Stefka Stoyanova
assigned a Technical Story from you ⟶ Unassigned
…
Vasil Vasilev
DM
Replied
Yesterday
добреее, значи трябва да има процес, който чете от redis и налива в Elastic Search
Review Toast
App
Yesterday
PR review requested by @stefka-jiminny on @nikolaybiaivanov's PR
Nikolay Ivanov
DM
Yesterday
ще станат конфликти
James Graham
DM
Yesterday
Cheers!
Tuesday, May 12th
Stoyan Tanev
DM
Replied
Tuesday
сега всичко е 6
Vasil Vasilev
Reacted in
platform-inner-team
Tuesday
You:
може ли един approve
https://github.com/jiminny/app/pull/12024
https://github.com/jiminny/app/pull/12024
1 reaction, react with white check mark emoji
1
Galya Dimitrova
DM
Tuesday
И другата седмица имаме презднтации пред борда в Лондон и съм до никъде
Galya Dimitrova
Reacted in
DM
Tuesday
You:
ако трябва да се пипне и в кода ще си направя тикет
1 reaction, react with +1 emoji
1
Steliyan Georgiev
DM
Tuesday
ще го видя
Steliyan Georgiev
Reacted in
DM
Tuesday
You:
ето го и репорт
…
1 reaction, react with +1 emoji
1
Petko Kashinski
DM
Tuesday
Huddle ?
Select a notification to view the details.
Processing uploaded file… complete! Message ready to be sent.
Channel
iTerm2ShellEditViewSessionScriptsProfilesWindowHelp‹ →0 lbl • | Daily - Platform • in 17 mAec2-user@ip-10-30-129-190:~-zshscreenpipe"885ec2-user@ip-10-30-129-...100% C8• Thu 14 May 9:28:33181DOCKERO ₴81DEV (-zsh)O ₴2APP (-zsh)83rsync MacBook Pro Microphone(input)_2026-05-12_18-33-56.mp4→ NAS / 199Krsync MacBook Pro Microphone(input)_2026-05-12_18-34-56.mp4→ NAS /199Krsync MacBook Pro Microphone (input)_2026-05-12_18-35-26.mp4 NAS•198Krsync MacBook Pro Microphone (input)_2026-05-12_18-35-56.mp4→ NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_18-36-26.mp4→ NAS / 206Krsync MacBookPro Microphone (input)_2026-05-12_18-36-56.mp4 → NAS ‹ 205Krsync MacBook Pro Microphone (input)_2026-05-12_18-37-26.mp4 → NAS ‹ 201Krsync MacBook Pro Microphone (input)_2026-05-12_18-37-56.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-38-26.mp4 → NAS ‹ 199Krsync MacBook Pro Microphone (input)_2026-05-12_18-38-56.mp4 → NAS ‹ 200Krsync MacBook Pro Microphone (input)_2026-05-12_18-39-26.mp4NAS / 200Krsync MacBook Pro Microphone (input)_2026-05-12_18-39-56.mp4→ NAS + 195Krsync MacBook Pro Microphone (input)_2026-05-12_18-40-26.mp4 NAS ‹ 198Krsync MacBook Pro Microphone (input)_2026-05-12_18-40-56. mp4→ NAS ‹ 202Krsync MacBook Pro Microphone (input)_2026-05-12_18-41-26.mp4 → NAS + 203Krsvnc MocRook Pro Micronhone (innut)2026-05-12 18-42-26.mn4 → NAS + 209Kec2-user@ip-10-20-31-14... 2731NSlack[2Uc0WGGGVV[2026-05-1321:46:00J"UEWINJIILUOSynccomplete for 2026-05-12[2026-05-1321:46:00]=———————___.ukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-13[2026-05-1409:28:1972026-05-1409:28:19]Screenpipe sync startingfor: 2026-05-13[2026-05-14 09:28:19][+00m00s] • Preflight checksSource DB:OK[2026-05-1409:28:19JERROR: NAS(5.6G)not mounted at /Volumes/screenpipelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~ $~/.screenpipe/scripts/screenpipe_sync.sh 2026-05-13[2026-05-1409:28:31][2026-05-1409:28:31]Screenpipe sync starting for: 2026-05-13[2026-05-1409:28:31][+00m00s]• PreflightchecksSource DB:NAS mount:OKOK(5.6G)/Volumes/screenpipe...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38772
|
1439
|
58
|
2026-05-14T06:28:34.245487+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740114245_m2.jpg...
|
Slack
|
Activity - Jiminny Inc - 4 new items - Slack
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
All, 4 unread
DMs
Add new tab
Stefka Stoyanova
DM
Mark as unread
Clear
More actions
здарсти Лукаш, ще направиш ли стори да ъпгрейднем Pipedrive SDK (ако може да напишеш от коя на коя версия)
…
Yesterday
Mario Georgiev
DM
Yesterday
тенк ю вери мъч, махнах му crm seat-a и има достъп, ще го имам напредвид вече че явно бие такава грешка когато фрии акаунта expir-ne или нещо подобно и няма особен workaround
Jira Cloud
App
Yesterday
@Stefka Stoyanova
@Stefka Stoyanova
assigned a Technical Story from you ⟶ Unassigned
…
Vasil Vasilev
DM
Replied
Yesterday
добреее, значи трябва да има процес, който чете от redis и налива в Elastic Search
Review Toast
App
Yesterday
PR review requested by @stefka-jiminny on @nikolaybiaivanov's PR
Nikolay Ivanov
DM
Yesterday
ще станат конфликти
James Graham
DM
Yesterday
Cheers!
Tuesday, May 12th
Stoyan Tanev
DM
Replied
Tuesday
сега всичко е 6
Vasil Vasilev
Reacted in
platform-inner-team
Tuesday
You:
може ли един approve
https://github.com/jiminny/app/pull/12024
https://github.com/jiminny/app/pull/12024
1 reaction, react with white check mark emoji
1
Galya Dimitrova
DM
Tuesday
И другата седмица имаме презднтации пред борда в Лондон и съм до никъде
Galya Dimitrova
Reacted in
DM
Tuesday
You:
ако трябва да се пипне и в кода ще си направя тикет
1 reaction, react with +1 emoji
1
Steliyan Georgiev
DM
Tuesday
ще го видя
Steliyan Georgiev
Reacted in
DM
Tuesday
You:
ето го и репорт
…
1 reaction, react with +1 emoji
1
Petko Kashinski
DM
Tuesday
Huddle ?
Select a notification to view the details.
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.5056516,"top":0.058260176,"width":0.011968086,"height":0.028731046},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.50299203,"top":0.10055866,"width":0.017287234,"height":0.054269753},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.50664896,"top":0.13806863,"width":0.009973404,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.50299203,"top":0.15482841,"width":0.017287234,"height":0.054269753},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.50764626,"top":0.19233839,"width":0.007978723,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.50299203,"top":0.20909816,"width":0.017287234,"height":0.054269753},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.5053192,"top":0.24660814,"width":0.012965426,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.5053192,"top":0.24660814,"width":0.0026595744,"height":0.011173184}},{"char_start":1,"char_count":7,"bounds":{"left":0.50764626,"top":0.24660814,"width":0.010638298,"height":0.011173184}}],"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.50299203,"top":0.26336792,"width":0.017287234,"height":0.054269753},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.50797874,"top":0.3008779,"width":0.0076462766,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.50797874,"top":0.3008779,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":4,"bounds":{"left":0.5099734,"top":0.3008779,"width":0.0056515955,"height":0.011173184}}],"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.50299203,"top":0.31763768,"width":0.017287234,"height":0.054269753},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.50731385,"top":0.35514766,"width":0.008643617,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.50731385,"top":0.35514766,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":4,"bounds":{"left":0.5093085,"top":0.35514766,"width":0.0066489363,"height":0.011173184}}],"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.50299203,"top":0.3719074,"width":0.017287234,"height":0.054269753},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.50731385,"top":0.4094174,"width":0.008976064,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.50731385,"top":0.4094174,"width":0.0033244682,"height":0.011173184}},{"char_start":1,"char_count":3,"bounds":{"left":0.5106383,"top":0.4094174,"width":0.0056515955,"height":0.011173184}}],"role_description":"text"},{"role":"AXRadioButton","text":"All, 4 unread","depth":19,"bounds":{"left":0.52892286,"top":0.09497207,"width":0.021609042,"height":0.026336791},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"DMs","depth":19,"bounds":{"left":0.55019945,"top":0.09497207,"width":0.014960106,"height":0.026336791},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add new tab","depth":20,"bounds":{"left":0.5674867,"top":0.09497207,"width":0.0056515955,"height":0.026336791},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":22,"bounds":{"left":0.54787236,"top":0.18276137,"width":0.037898935,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.18276137,"width":0.0026595744,"height":0.014365523}},{"char_start":1,"char_count":15,"bounds":{"left":0.5505319,"top":0.18276137,"width":0.03523936,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.54787236,"top":0.19952115,"width":0.00731383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Mark as unread","depth":23,"bounds":{"left":0.5880984,"top":0.17797287,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clear","depth":23,"bounds":{"left":0.5987367,"top":0.17797287,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":23,"bounds":{"left":0.609375,"top":0.17797287,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"здарсти Лукаш, ще направиш ли стори да ъпгрейднем Pipedrive SDK (ако може да напишеш от коя на коя версия)","depth":23,"bounds":{"left":0.53324467,"top":0.21787709,"width":0.08643617,"height":0.06703911},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.53324467,"top":0.21787709,"width":0.0023271276,"height":0.014365523}},{"char_start":1,"char_count":105,"bounds":{"left":0.53324467,"top":0.21787709,"width":0.08643617,"height":0.049481247}}],"role_description":"text"},{"role":"AXStaticText","text":"…","depth":23,"bounds":{"left":0.55019945,"top":0.27055067,"width":0.0039893617,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":21,"bounds":{"left":0.5671542,"top":0.28890663,"width":0.018949468,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.5671542,"top":0.2897047,"width":0.0026595744,"height":0.012769354}},{"char_start":1,"char_count":8,"bounds":{"left":0.5694814,"top":0.2897047,"width":0.01662234,"height":0.012769354}}],"role_description":"text"},{"role":"AXStaticText","text":"Mario Georgiev","depth":22,"bounds":{"left":0.54787236,"top":0.33439744,"width":0.034242023,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.33439744,"width":0.004654255,"height":0.014365523}},{"char_start":1,"char_count":13,"bounds":{"left":0.5525266,"top":0.33439744,"width":0.02925532,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.54787236,"top":0.35115722,"width":0.00731383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":22,"bounds":{"left":0.60172874,"top":0.3367917,"width":0.018284574,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.60172874,"top":0.3367917,"width":0.0023271276,"height":0.013567438}},{"char_start":1,"char_count":8,"bounds":{"left":0.6037234,"top":0.3367917,"width":0.01662234,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"тенк ю вери мъч, махнах му crm seat-a и има достъп, ще го имам напредвид вече че явно бие такава грешка когато фрии акаунта expir-ne или нещо подобно и няма особен workaround","depth":23,"bounds":{"left":0.53324467,"top":0.36951315,"width":0.08610372,"height":0.10215483},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.53324467,"top":0.36951315,"width":0.0026595744,"height":0.014365523}},{"char_start":1,"char_count":173,"bounds":{"left":0.53324467,"top":0.36951315,"width":0.08610372,"height":0.10215483}}],"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":22,"bounds":{"left":0.54787236,"top":0.43176377,"width":0.021941489,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.43176377,"width":0.0019946808,"height":0.014365523}},{"char_start":1,"char_count":9,"bounds":{"left":0.54986703,"top":0.43176377,"width":0.019946808,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"App","depth":22,"bounds":{"left":0.54787236,"top":0.44852355,"width":0.007978723,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.44852355,"width":0.0029920214,"height":0.012769354}},{"char_start":1,"char_count":2,"bounds":{"left":0.55086434,"top":0.44852355,"width":0.004986702,"height":0.012769354}}],"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":22,"bounds":{"left":0.60172874,"top":0.43415803,"width":0.018284574,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.60172874,"top":0.43415803,"width":0.0023271276,"height":0.013567438}},{"char_start":1,"char_count":8,"bounds":{"left":0.6037234,"top":0.43415803,"width":0.01662234,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.5405585,"top":0.4668795,"width":0.0013297872,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"@Stefka Stoyanova","depth":23,"bounds":{"left":0.5418883,"top":0.4660814,"width":0.043882977,"height":0.015961692},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"@Stefka Stoyanova","depth":24,"bounds":{"left":0.5425532,"top":0.4668795,"width":0.04255319,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.5425532,"top":0.4668795,"width":0.0043218085,"height":0.014365523}},{"char_start":1,"char_count":16,"bounds":{"left":0.5465425,"top":0.4668795,"width":0.03856383,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"assigned a Technical Story from you ⟶ Unassigned","depth":23,"bounds":{"left":0.53324467,"top":0.4668795,"width":0.077792555,"height":0.049481247},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58577126,"top":0.4668795,"width":0.0013297872,"height":0.014365523}},{"char_start":1,"char_count":47,"bounds":{"left":0.53324467,"top":0.4668795,"width":0.077792555,"height":0.049481247}}],"role_description":"text"},{"role":"AXStaticText","text":"…","depth":23,"bounds":{"left":0.5588431,"top":0.5019952,"width":0.0039893617,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":22,"bounds":{"left":0.54787236,"top":0.5291301,"width":0.026595745,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.5291301,"width":0.0029920214,"height":0.014365523}},{"char_start":1,"char_count":12,"bounds":{"left":0.55086434,"top":0.5291301,"width":0.023271276,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.54787236,"top":0.54588985,"width":0.00731383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Replied","depth":22,"bounds":{"left":0.58477396,"top":0.53152436,"width":0.012965426,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58477396,"top":0.5323224,"width":0.0023271276,"height":0.011971269}},{"char_start":1,"char_count":6,"bounds":{"left":0.58710104,"top":0.5323224,"width":0.010638298,"height":0.011971269}}],"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":22,"bounds":{"left":0.60172874,"top":0.53152436,"width":0.018284574,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.60172874,"top":0.53152436,"width":0.0023271276,"height":0.013567438}},{"char_start":1,"char_count":8,"bounds":{"left":0.6037234,"top":0.53152436,"width":0.01662234,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"добреее, значи трябва да има процес, който чете от redis и налива в Elastic Search","depth":23,"bounds":{"left":0.53324467,"top":0.5642458,"width":0.08610372,"height":0.049481247},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.53324467,"top":0.5642458,"width":0.0029920214,"height":0.014365523}},{"char_start":1,"char_count":82,"bounds":{"left":0.53324467,"top":0.5642458,"width":0.08610372,"height":0.031923383}}],"role_description":"text"},{"role":"AXStaticText","text":"Review Toast","depth":22,"bounds":{"left":0.54787236,"top":0.62649643,"width":0.028590426,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.62649643,"width":0.0029920214,"height":0.014365523}},{"char_start":1,"char_count":11,"bounds":{"left":0.55086434,"top":0.62649643,"width":0.025598405,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"App","depth":22,"bounds":{"left":0.54787236,"top":0.6432562,"width":0.007978723,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.6432562,"width":0.0029920214,"height":0.012769354}},{"char_start":1,"char_count":2,"bounds":{"left":0.55086434,"top":0.6432562,"width":0.004986702,"height":0.012769354}}],"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":22,"bounds":{"left":0.60172874,"top":0.62889063,"width":0.018284574,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.60172874,"top":0.62889063,"width":0.0023271276,"height":0.013567438}},{"char_start":1,"char_count":8,"bounds":{"left":0.6037234,"top":0.62889063,"width":0.01662234,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"PR review requested by @stefka-jiminny on @nikolaybiaivanov's PR","depth":23,"bounds":{"left":0.53324467,"top":0.66161215,"width":0.07480053,"height":0.031923383},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.53324467,"top":0.66161215,"width":0.0029920214,"height":0.014365523}},{"char_start":1,"char_count":63,"bounds":{"left":0.53324467,"top":0.66161215,"width":0.07480053,"height":0.031923383}}],"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":22,"bounds":{"left":0.54787236,"top":0.7238627,"width":0.032247342,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.7238627,"width":0.0039893617,"height":0.014365523}},{"char_start":1,"char_count":13,"bounds":{"left":0.5518617,"top":0.7238627,"width":0.027925532,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.54787236,"top":0.7406225,"width":0.00731383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":22,"bounds":{"left":0.60172874,"top":0.72625697,"width":0.018284574,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.60172874,"top":0.72625697,"width":0.0023271276,"height":0.013567438}},{"char_start":1,"char_count":8,"bounds":{"left":0.6037234,"top":0.72625697,"width":0.01662234,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"ще станат конфликти","depth":23,"bounds":{"left":0.53324467,"top":0.7589784,"width":0.050199468,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.53324467,"top":0.7589784,"width":0.0043218085,"height":0.014365523}},{"char_start":1,"char_count":18,"bounds":{"left":0.5375665,"top":0.7589784,"width":0.045545213,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":22,"bounds":{"left":0.54787236,"top":0.8036712,"width":0.031914894,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.8036712,"width":0.0019946808,"height":0.014365523}},{"char_start":1,"char_count":11,"bounds":{"left":0.54986703,"top":0.8036712,"width":0.029920213,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.54787236,"top":0.820431,"width":0.00731383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":22,"bounds":{"left":0.60172874,"top":0.80606544,"width":0.018284574,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.60172874,"top":0.80606544,"width":0.0023271276,"height":0.013567438}},{"char_start":1,"char_count":8,"bounds":{"left":0.6037234,"top":0.80606544,"width":0.01662234,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"Cheers!","depth":23,"bounds":{"left":0.53324467,"top":0.8387869,"width":0.016954787,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.53324467,"top":0.8387869,"width":0.0033244682,"height":0.014365523}},{"char_start":1,"char_count":6,"bounds":{"left":0.5365692,"top":0.8387869,"width":0.013297873,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"Tuesday, May 12th","depth":21,"bounds":{"left":0.55851066,"top":0.8922586,"width":0.036236703,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.55851066,"top":0.8930567,"width":0.0023271276,"height":0.012769354}},{"char_start":1,"char_count":16,"bounds":{"left":0.56083775,"top":0.8930567,"width":0.033909574,"height":0.012769354}}],"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":22,"bounds":{"left":0.54787236,"top":0.9377494,"width":0.028922873,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.9377494,"width":0.0026595744,"height":0.014365523}},{"char_start":1,"char_count":11,"bounds":{"left":0.5505319,"top":0.9377494,"width":0.026263298,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.54787236,"top":0.9545092,"width":0.00731383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Replied","depth":22,"bounds":{"left":0.58776593,"top":0.94014364,"width":0.012965426,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58776593,"top":0.94094175,"width":0.0023271276,"height":0.011971269}},{"char_start":1,"char_count":6,"bounds":{"left":0.5900931,"top":0.94094175,"width":0.010638298,"height":0.011971269}}],"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.6047208,"top":0.94014364,"width":0.015292553,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.6047208,"top":0.94014364,"width":0.0023271276,"height":0.013567438}},{"char_start":1,"char_count":6,"bounds":{"left":0.60671544,"top":0.94014364,"width":0.013630319,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"сега всичко е 6","depth":23,"bounds":{"left":0.53324467,"top":0.9728651,"width":0.034574468,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.53324467,"top":0.9728651,"width":0.0023271276,"height":0.014365523}},{"char_start":1,"char_count":14,"bounds":{"left":0.5355718,"top":0.9728651,"width":0.032247342,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.026595745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Reacted in","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":22,"bounds":{"left":0.56981385,"top":0.9952115,"width":0.027260639,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.6047208,"top":0.9952115,"width":0.015292553,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"You:","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"може ли един approve","depth":23,"bounds":{"left":0.54388297,"top":0.9952115,"width":0.05285904,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/app/pull/12024","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.08676862,"height":0.0007980846},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/12024","depth":24,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.08676862,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with white check mark emoji","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":24,"bounds":{"left":0.5425532,"top":0.9952115,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.03523936,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.00731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.6047208,"top":0.9952115,"width":0.015292553,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"И другата седмица имаме презднтации пред борда в Лондон и съм до никъде","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.08610372,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.03523936,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Reacted in","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.56848407,"top":0.9952115,"width":0.00731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.6047208,"top":0.9952115,"width":0.015292553,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"You:","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако трябва да се пипне и в кода ще си направя тикет","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.08510638,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with +1 emoji","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":24,"bounds":{"left":0.5425532,"top":0.9952115,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.038231384,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.00731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.6047208,"top":0.9952115,"width":0.015292553,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ще го видя","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.025265958,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.038231384,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Reacted in","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.56848407,"top":0.9952115,"width":0.00731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.6047208,"top":0.9952115,"width":0.015292553,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"You:","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ето го и репорт","depth":23,"bounds":{"left":0.54388297,"top":0.9952115,"width":0.03557181,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"…","depth":23,"bounds":{"left":0.5794548,"top":0.9952115,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with +1 emoji","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":24,"bounds":{"left":0.5425532,"top":0.9952115,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.034574468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.00731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.6047208,"top":0.9952115,"width":0.015292553,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddle ?","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.019614361,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Select a notification to view the details.","depth":17,"bounds":{"left":0.7712766,"top":0.5171588,"width":0.08577128,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7712766,"top":0.5171588,"width":0.0029920214,"height":0.014365523}},{"char_start":1,"char_count":41,"bounds":{"left":0.77393615,"top":0.5171588,"width":0.08344415,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"bounds":{"left":0.5,"top":0.9992019,"width":0.022938829,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"bounds":{"left":0.5,"top":0.9992019,"width":0.01761968,"height":0.0007980846},"on_screen":true,"role_description":"text"}]...
|
8367143638802948576
|
-5949560164595188541
|
app_switch
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
All, 4 unread
DMs
Add new tab
Stefka Stoyanova
DM
Mark as unread
Clear
More actions
здарсти Лукаш, ще направиш ли стори да ъпгрейднем Pipedrive SDK (ако може да напишеш от коя на коя версия)
…
Yesterday
Mario Georgiev
DM
Yesterday
тенк ю вери мъч, махнах му crm seat-a и има достъп, ще го имам напредвид вече че явно бие такава грешка когато фрии акаунта expir-ne или нещо подобно и няма особен workaround
Jira Cloud
App
Yesterday
@Stefka Stoyanova
@Stefka Stoyanova
assigned a Technical Story from you ⟶ Unassigned
…
Vasil Vasilev
DM
Replied
Yesterday
добреее, значи трябва да има процес, който чете от redis и налива в Elastic Search
Review Toast
App
Yesterday
PR review requested by @stefka-jiminny on @nikolaybiaivanov's PR
Nikolay Ivanov
DM
Yesterday
ще станат конфликти
James Graham
DM
Yesterday
Cheers!
Tuesday, May 12th
Stoyan Tanev
DM
Replied
Tuesday
сега всичко е 6
Vasil Vasilev
Reacted in
platform-inner-team
Tuesday
You:
може ли един approve
https://github.com/jiminny/app/pull/12024
https://github.com/jiminny/app/pull/12024
1 reaction, react with white check mark emoji
1
Galya Dimitrova
DM
Tuesday
И другата седмица имаме презднтации пред борда в Лондон и съм до никъде
Galya Dimitrova
Reacted in
DM
Tuesday
You:
ако трябва да се пипне и в кода ще си направя тикет
1 reaction, react with +1 emoji
1
Steliyan Georgiev
DM
Tuesday
ще го видя
Steliyan Georgiev
Reacted in
DM
Tuesday
You:
ето го и репорт
…
1 reaction, react with +1 emoji
1
Petko Kashinski
DM
Tuesday
Huddle ?
Select a notification to view the details.
Processing uploaded file… complete! Message ready to be sent.
Channel
•• cFavourites• jiminny() AirDrop• RecentsA Applications9 Documen• iCloud Drive992 Svnc tolde0 DXP4800PLUS-B5F A• Orange• Red• Yellov• Greer• Blue• Purple• All Tags.Mideooon fro micropnione (miput-c020-00-14-1-o0-2op4e System Audio (output2026-05-1217-30-28.mp4•1 MacBook Pro Micronhone (inout) 2026-05-12 17-29-58.mn4D System Audio (output)_2026-05-12_17-29-58.mp40 MacBook Pro Microphone (input) 2026-05-12 17-29-28.mp401 Svstem Audio (outout) 2026-05-12 17-29-28.mo4• MacBook Pro Microphone (input) 2026-05-12_17-28-58.mp4• System Audio (output)_2026-05-12_17-28-58.mp4• MacBook Pro Microphone (input)_ 2026-05-12_17-28-28.mp4|• System Audio (output)_2026-05-12_17-28-28.mp4(input)_2026-05-12_17-27-58.mp4• System Audio (output) 2026-05-12 17-27-58.mp401 MacBook Pro Micronhone (inout) 2026-05-12 17-27-28 mo4D System Audio (output)_2026-05-12_17-27-28.mp4• MacBook Pro Microphone (input)_2026-05-12_17-26-58.mp4• System Audio (outout) 2026-05-1217-26-58.mp4• MacBook Pro Microphone (input)_ 2026-05-12_17-26-28.mp4System Audio (output)_2026-esystem Audio (output 2026-05-121/-20-58.mp4• MacBook Pro Microphone (input)_2026-05-12_17-25-58.mp4D System Audio (output)_2026-05-12_17-25-28.mp4• MacBook Pro Microphone (input) 2026-05-12_17-25-28.mp40 Svstem Audio (outout) 2026-05-12 17-24-58.mo4• MacBook Pro Microphone (input) 2026-05-12_17-24-58.mp4MacBook Pro Microphone (input)_2026-05-12_17-24-28.mp4esystem Audio (output 2026-05-1217-24-28.mp4@ MacRook Dro Micronhone (innut) 2026-05-12 17-22-58 mn4• Svstem Audio (outout) 2026-05-12 17-23-58 mp4• масьоок Pro Micropnone (input 2020-05-12 1/-23-28.mp401 Svstem Audio (outout 2026-05-2 17-23-28.mo4|@ MacBook Pro Microphone (input) 2026-05-12_17-22-58.mp4D System Audio (output)_2026-05-12_17-22-58.mp4• MacBook Pro Microphone (input) _ 2026-05-12_17-22-28.mp4@1 Suctem Audio (outnut) 2026-05-12 17-22-28 mn/lD System Audio (output) _2026-05-12_17-21-56.mp4• MacBook Pro Microphone (input) 2026-05-12 17-21-56.mp401 Lakvlak bose ac25 l| (inout) 2026-05-12 14-22-38.mo4• LakyLak bose qc35 Il (input)_2026-05-12_14-21-38.mp4LakyLak bose qc35 II (input)_2026-05-12_14-15-09.mp4l Lakylak bose accs inout2026-05-12 14-10-40.mo4|al lakvlak hace ac25 ll finnut) 2026-05-12 11-09-11 mл/• MacBook Prne (inout) 2026-05-12 13-35-39.mр4• MacBook Pro Microphone (input) 2026-05-12_13-00-11.mp4@1 MacBook Pro Micronhone (inout) 2026-05-12 12-59-41.mo4D MacBook Pro Microphone (input)_ 2026-05-12_12-59-11.mp4• MacBook Pro Microphone (input) _2026-05-12_12-22-51.mр401 MacBook Pro Microphone (inout) 2026-05-12 12-22-21.mo4@ MacBook Pro Microphone (input) 2026-05-12 12-21-51.mp4• MacBook Pro Microphone• MacBook Pro Microphone (input) 2026-05-12 12-20-51.mp4@ MacRook Pro Micronhone (innut) 2026-05-12 12-20-21 mn/• MacBook Pro Microphone (input)_2026-05-12_12-19-52.mp4• MacBook Pro Microphone (input) 2026-05-12_ 12-19-22.mр401 MacBook Pro Micronhone (inout) 2026-05-12 12-18-52 mo4a Morponl Dra Micranhono hool 0006 06 70 42.19.29 мл/.v Q SearchDate Modified12 May 2026 at 20:3012 Mav 2026 at 20:3012 May 2026 at 20:301< May <020 al 20-2512 Mav 2026 at 20:2912 May 2026 at 20:2912 May 2026 at 20:2912 May 2026 at 20:2812 May 2026 at 20:2812 May 2026 at 20:2812 May 2026 at 20:2812 Mav 2026 at 20:2712 May 2026 at 20:2712 May 2026 at 20:2712 May 2026 at 20:2712 May 2026 at 20:2612 May 2026 at 20.2612 Mav 2026 at 20:2612 May 2026 at 20:2512 May 2026 at 20:2512 May 2026 at 20:2512 May 2026 at 20:2512 May 2026 at 20:2412 Mav 2026 at 20:24|12 May 2026 at 20:2412 May 2026 at 20:2312 May 2026 at 20:2312 May 2026 at 20.2212 Mav 2026 at 20:2212 May 2026 at 20:2212 May 2026 at 20:2212 Mav 2026 at 17:2312 May 2026 at 17:2212 Mav 2026 at 17:11112 Mav 2026 at 17:0812 Mav 2026 at 16:3612 May 2026 at 16:0012 Mav 2026 at 16:00.12 May 2026 at 15:5912 May 2026 at 15:2312 Mav 2026 at 15:2212 Mav 2026 at 15:2912 May 2026 at 15:2112 Mav 2026 at 15:20112 May 2026 at 15:2012 May 2026 at 15:1912 Mav 2026 at 15:19MA 2006 C+ 46.1012 May 2020 at 1519,4990 items. 13.63 GB avZUUNe5 KBMPEG-4 movie207 KB MPEG-4 movie5 KB205 KBMPEG-4 movie5 K:MPEG-4 movie213 KB MPEG-4 movie5 KB207 KEMPEG-4 movie5KR MDEG_A movid198 KBMPEG-4 movie209 KB.MPEG-4 movie5 KB MPEG-4 movie210 KBMPEG-4 movie5 K:206 KB MPEG-4 movie5 KBMPEG-4 movie211 KRIMPEG-A movie5 KB MPEG-4 movie200 KBMPEG-4 movie5 K:MPEG-4 movie203 KBMDEC.A movid206 KBMPEG-4 movieMDEG-A movie200 KR5 KBMPEG-4 movie204 KBMPEG-4 movieMPEG-4 movie200 KB MPEG-4 movie5 KB199 KEMPEG-4 movie5 KRMDEG-A movie5 KBMPEG-4 movie199 KBMPEG-4 movie211 KEMPEG-4 movie226 KBMPEG-4 movie203 KB212 KMPEG-4 movie.221 KR213 KB199 Kb208 KEMDSG-A movieMPEG-4 movieMPEG-4 movieMPFG.A movie207 KBMPEG-4 movie247 KB216 KBMPEG-4 movie215 KR219 KB216 KEMDEG.A movioMPEG-4 movie218 KPMPFG-A movie232 KB MPEG-4 movie217 KE210 KEMPEG-4 movien10 vo TMDEeA movinFavounites• jiminny(®) AirDrop• Recents* Applications|9 Documents(0) Downloadeii lukasiCloud• iCloud Drive992 Svnc tolde0 DXP4800PLUS-B5F A49 Network• CRM• Orange• Red• Yellow• Purple• All Tags..g=mCscreenpipeBack/Forwarddb.sqlite-shmdb.sqlite-walscreenpipe.2026-05-12.0.logscreenpipe.2026-05-11.0.1ogsync.log• screenpipe.2026-05-07.0.1ogvi data•2026-05-122026-05-112026-05-072026-05-06• 2026-04-28• 2026-04-27> * 2026-04-25•2026-04-242026-04-22• 2026.04.222026-04-20• 2026-04-21• 2026-04-17• 2026-04-162026-04-152026-04-14archive.dbscriptsscreennine sunc old shscreenpipe_sync copy.shscreenpipe_fts_migrate.shdb salitearchive.db.bak-pre-installid• screenpipe_sync_updated.sharchive.do-oak>anrscreenpipe.db→oinesDaily - Platform - in 17 m100% L2(Q SearchDate ModifiedToday at 0:29Yesterday at 21:52Yesterday at 21:4612 Mav 2026 at 21:4611 May 2026 at 22:5410 May 2026 at 13:477 May 2026 at 21:50Voctordau at 21:12Yesterday at 21:42Yesterday at 27:058 Mau 2026 at 0:266 May 2026 at 21:0228 Apr 2026 at 22:2328 Aor 2026 at 9:19OE Anr 200G dt 16.2024 Aor 2026 at 12:0824 Aor 2026 at 12:0722 Apr 2026 at 18:4422 Apr 2026 at 9:1618 Anr 2026 at 13:3517 Anr 2006 ot 0.5716 Apr 2026 at 9:1315 Aor 2026 at 9:59Yoctordau at 21:11Yesterday at 20:57Yocterdav at 10:2212 May 2026 at 21:2012 May 2026 at 20:2512 Mav 2026 at 17:41Meu 15 2010 May 2026 at 13:0610 May 2026 at 12:3126 Anr 2026 at 20:10• Thu 14 May 9:28:3322 KP Nosumont1,4 MBFolder294 KB Loa File529 KB Log File7 KBLog File566 KB Loa File9.27 Cp Coldor42,2 MB605.8 MEFolder205AMR Calder18,8 MB Folder166,7 MB339 8 MBFolder39.7 MB Folder265.5 MEFolder171 9 MR Soldon525,4 MB Folder450,8 MB690 6 MRFolden837.2 MB Folder2,15 GB1.09 G:Folden2 17 CR Documont70,01 GB28 KE18 KProlderTerminal scrinte15 KB Terminal scripts4.46 GB12 00 Cp Dasumont20 KB11.13 GE204 KPColder18 Aor 2026 at 17:4213 Apr 2026 at 17:2111 Aor 2026 at 16:5131 bytes JSONIZero bytes13 KEFolden38 items, 1.92 TB availabld...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38773
|
1439
|
59
|
2026-05-14T06:28:35.578443+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740115578_m2.jpg...
|
Slack
|
Activity - Jiminny Inc - 4 new items - Slack
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
All, 4 unread
DMs
Add new tab
Stefka Stoyanova
DM
Mark as unread
Clear
More actions
здарсти Лукаш, ще направиш ли стори да ъпгрейднем Pipedrive SDK (ако може да напишеш от коя на коя версия)
…
Yesterday
Mario Georgiev
DM
Yesterday
тенк ю вери мъч, махнах му crm seat-a и има достъп, ще го имам напредвид вече че явно бие такава грешка когато фрии акаунта expir-ne или нещо подобно и няма особен workaround
Jira Cloud
App
Mark as unread
Clear
More actions
@Stefka Stoyanova
@Stefka Stoyanova
assigned a Technical Story from you ⟶ Unassigned
…
Vasil Vasilev
DM
Replied
Yesterday
добреее, значи трябва да има процес, който чете от redis и налива в Elastic Search
Review Toast
App
Yesterday
PR review requested by @stefka-jiminny on @nikolaybiaivanov's PR
Nikolay Ivanov
DM
Yesterday
ще станат конфликти
James Graham
DM
Yesterday
Cheers!
Tuesday, May 12th
Stoyan Tanev
DM
Replied
Tuesday
сега всичко е 6
Vasil Vasilev
Reacted in
platform-inner-team
Tuesday
You:
може ли един approve
https://github.com/jiminny/app/pull/12024
https://github.com/jiminny/app/pull/12024
1 reaction, react with white check mark emoji
1
Galya Dimitrova
DM
Tuesday
И другата седмица имаме презднтации пред борда в Лондон и съм до никъде
Galya Dimitrova
Reacted in
DM
Tuesday
You:
ако трябва да се пипне и в кода ще си направя тикет
1 reaction, react with +1 emoji
1
Steliyan Georgiev
DM
Tuesday
ще го видя
Steliyan Georgiev
Reacted in
DM
Tuesday
You:
ето го и репорт
…
1 reaction, react with +1 emoji
1
Petko Kashinski
DM
Tuesday
Huddle ?
Select a notification to view the details.
Processing uploaded file… complete! Message ready to be sent.
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.5056516,"top":0.058260176,"width":0.011968086,"height":0.028731046},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.50299203,"top":0.10055866,"width":0.017287234,"height":0.054269753},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.50664896,"top":0.13806863,"width":0.009973404,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.50299203,"top":0.15482841,"width":0.017287234,"height":0.054269753},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.50764626,"top":0.19233839,"width":0.007978723,"height":0.0103751},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.50299203,"top":0.20909816,"width":0.017287234,"height":0.054269753},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.5053192,"top":0.24660814,"width":0.012965426,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.5053192,"top":0.24660814,"width":0.0026595744,"height":0.011173184}},{"char_start":1,"char_count":7,"bounds":{"left":0.50764626,"top":0.24660814,"width":0.010638298,"height":0.011173184}}],"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.50299203,"top":0.26336792,"width":0.017287234,"height":0.054269753},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.50797874,"top":0.3008779,"width":0.0076462766,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.50797874,"top":0.3008779,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":4,"bounds":{"left":0.5099734,"top":0.3008779,"width":0.0056515955,"height":0.011173184}}],"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.50299203,"top":0.31763768,"width":0.017287234,"height":0.054269753},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.50731385,"top":0.35514766,"width":0.008643617,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.50731385,"top":0.35514766,"width":0.0019946808,"height":0.011173184}},{"char_start":1,"char_count":4,"bounds":{"left":0.5093085,"top":0.35514766,"width":0.0066489363,"height":0.011173184}}],"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.50299203,"top":0.3719074,"width":0.017287234,"height":0.054269753},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.50731385,"top":0.4094174,"width":0.008976064,"height":0.0103751},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.50731385,"top":0.4094174,"width":0.0033244682,"height":0.011173184}},{"char_start":1,"char_count":3,"bounds":{"left":0.5106383,"top":0.4094174,"width":0.0056515955,"height":0.011173184}}],"role_description":"text"},{"role":"AXRadioButton","text":"All, 4 unread","depth":19,"bounds":{"left":0.52892286,"top":0.09497207,"width":0.021609042,"height":0.026336791},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"DMs","depth":19,"bounds":{"left":0.55019945,"top":0.09497207,"width":0.014960106,"height":0.026336791},"on_screen":true,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add new tab","depth":20,"bounds":{"left":0.5674867,"top":0.09497207,"width":0.0056515955,"height":0.026336791},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":22,"bounds":{"left":0.54787236,"top":0.18276137,"width":0.037898935,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.18276137,"width":0.0026595744,"height":0.014365523}},{"char_start":1,"char_count":15,"bounds":{"left":0.5505319,"top":0.18276137,"width":0.03523936,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.54787236,"top":0.19952115,"width":0.00731383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Mark as unread","depth":23,"bounds":{"left":0.5880984,"top":0.17797287,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clear","depth":23,"bounds":{"left":0.5987367,"top":0.17797287,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":23,"bounds":{"left":0.609375,"top":0.17797287,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"здарсти Лукаш, ще направиш ли стори да ъпгрейднем Pipedrive SDK (ако може да напишеш от коя на коя версия)","depth":23,"bounds":{"left":0.53324467,"top":0.21787709,"width":0.08643617,"height":0.06703911},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.53324467,"top":0.21787709,"width":0.0023271276,"height":0.014365523}},{"char_start":1,"char_count":105,"bounds":{"left":0.53324467,"top":0.21787709,"width":0.08643617,"height":0.049481247}}],"role_description":"text"},{"role":"AXStaticText","text":"…","depth":23,"bounds":{"left":0.55019945,"top":0.27055067,"width":0.0039893617,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":21,"bounds":{"left":0.5671542,"top":0.28890663,"width":0.018949468,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.5671542,"top":0.2897047,"width":0.0026595744,"height":0.012769354}},{"char_start":1,"char_count":8,"bounds":{"left":0.5694814,"top":0.2897047,"width":0.01662234,"height":0.012769354}}],"role_description":"text"},{"role":"AXStaticText","text":"Mario Georgiev","depth":22,"bounds":{"left":0.54787236,"top":0.33439744,"width":0.034242023,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.33439744,"width":0.004654255,"height":0.014365523}},{"char_start":1,"char_count":13,"bounds":{"left":0.5525266,"top":0.33439744,"width":0.02925532,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.54787236,"top":0.35115722,"width":0.00731383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":22,"bounds":{"left":0.60172874,"top":0.3367917,"width":0.018284574,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.60172874,"top":0.3367917,"width":0.0023271276,"height":0.013567438}},{"char_start":1,"char_count":8,"bounds":{"left":0.6037234,"top":0.3367917,"width":0.01662234,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"тенк ю вери мъч, махнах му crm seat-a и има достъп, ще го имам напредвид вече че явно бие такава грешка когато фрии акаунта expir-ne или нещо подобно и няма особен workaround","depth":23,"bounds":{"left":0.53324467,"top":0.36951315,"width":0.08610372,"height":0.10215483},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.53324467,"top":0.36951315,"width":0.0026595744,"height":0.014365523}},{"char_start":1,"char_count":173,"bounds":{"left":0.53324467,"top":0.36951315,"width":0.08610372,"height":0.10215483}}],"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":22,"bounds":{"left":0.54787236,"top":0.43176377,"width":0.021941489,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.43176377,"width":0.0019946808,"height":0.014365523}},{"char_start":1,"char_count":9,"bounds":{"left":0.54986703,"top":0.43176377,"width":0.019946808,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"App","depth":22,"bounds":{"left":0.54787236,"top":0.44852355,"width":0.007978723,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.44852355,"width":0.0029920214,"height":0.012769354}},{"char_start":1,"char_count":2,"bounds":{"left":0.55086434,"top":0.44852355,"width":0.004986702,"height":0.012769354}}],"role_description":"text"},{"role":"AXButton","text":"Mark as unread","depth":23,"bounds":{"left":0.5880984,"top":0.42697525,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Clear","depth":23,"bounds":{"left":0.5987367,"top":0.42697525,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":23,"bounds":{"left":0.609375,"top":0.42697525,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.5405585,"top":0.4668795,"width":0.0013297872,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"@Stefka Stoyanova","depth":23,"bounds":{"left":0.5418883,"top":0.4660814,"width":0.043882977,"height":0.015961692},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"@Stefka Stoyanova","depth":24,"bounds":{"left":0.5425532,"top":0.4668795,"width":0.04255319,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.5425532,"top":0.4668795,"width":0.0043218085,"height":0.014365523}},{"char_start":1,"char_count":16,"bounds":{"left":0.5465425,"top":0.4668795,"width":0.03856383,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"assigned a Technical Story from you ⟶ Unassigned","depth":23,"bounds":{"left":0.53324467,"top":0.4668795,"width":0.077792555,"height":0.049481247},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58577126,"top":0.4668795,"width":0.0013297872,"height":0.014365523}},{"char_start":1,"char_count":47,"bounds":{"left":0.53324467,"top":0.4668795,"width":0.077792555,"height":0.049481247}}],"role_description":"text"},{"role":"AXStaticText","text":"…","depth":23,"bounds":{"left":0.5588431,"top":0.5019952,"width":0.0039893617,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":22,"bounds":{"left":0.54787236,"top":0.5291301,"width":0.026595745,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.5291301,"width":0.0029920214,"height":0.014365523}},{"char_start":1,"char_count":12,"bounds":{"left":0.55086434,"top":0.5291301,"width":0.023271276,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.54787236,"top":0.54588985,"width":0.00731383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Replied","depth":22,"bounds":{"left":0.58477396,"top":0.53152436,"width":0.012965426,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58477396,"top":0.5323224,"width":0.0023271276,"height":0.011971269}},{"char_start":1,"char_count":6,"bounds":{"left":0.58710104,"top":0.5323224,"width":0.010638298,"height":0.011971269}}],"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":22,"bounds":{"left":0.60172874,"top":0.53152436,"width":0.018284574,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.60172874,"top":0.53152436,"width":0.0023271276,"height":0.013567438}},{"char_start":1,"char_count":8,"bounds":{"left":0.6037234,"top":0.53152436,"width":0.01662234,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"добреее, значи трябва да има процес, който чете от redis и налива в Elastic Search","depth":23,"bounds":{"left":0.53324467,"top":0.5642458,"width":0.08610372,"height":0.049481247},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.53324467,"top":0.5642458,"width":0.0029920214,"height":0.014365523}},{"char_start":1,"char_count":82,"bounds":{"left":0.53324467,"top":0.5642458,"width":0.08610372,"height":0.031923383}}],"role_description":"text"},{"role":"AXStaticText","text":"Review Toast","depth":22,"bounds":{"left":0.54787236,"top":0.62649643,"width":0.028590426,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.62649643,"width":0.0029920214,"height":0.014365523}},{"char_start":1,"char_count":11,"bounds":{"left":0.55086434,"top":0.62649643,"width":0.025598405,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"App","depth":22,"bounds":{"left":0.54787236,"top":0.6432562,"width":0.007978723,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.6432562,"width":0.0029920214,"height":0.012769354}},{"char_start":1,"char_count":2,"bounds":{"left":0.55086434,"top":0.6432562,"width":0.004986702,"height":0.012769354}}],"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":22,"bounds":{"left":0.60172874,"top":0.62889063,"width":0.018284574,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.60172874,"top":0.62889063,"width":0.0023271276,"height":0.013567438}},{"char_start":1,"char_count":8,"bounds":{"left":0.6037234,"top":0.62889063,"width":0.01662234,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"PR review requested by @stefka-jiminny on @nikolaybiaivanov's PR","depth":23,"bounds":{"left":0.53324467,"top":0.66161215,"width":0.07480053,"height":0.031923383},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.53324467,"top":0.66161215,"width":0.0029920214,"height":0.014365523}},{"char_start":1,"char_count":63,"bounds":{"left":0.53324467,"top":0.66161215,"width":0.07480053,"height":0.031923383}}],"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":22,"bounds":{"left":0.54787236,"top":0.7238627,"width":0.032247342,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.7238627,"width":0.0039893617,"height":0.014365523}},{"char_start":1,"char_count":13,"bounds":{"left":0.5518617,"top":0.7238627,"width":0.027925532,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.54787236,"top":0.7406225,"width":0.00731383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":22,"bounds":{"left":0.60172874,"top":0.72625697,"width":0.018284574,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.60172874,"top":0.72625697,"width":0.0023271276,"height":0.013567438}},{"char_start":1,"char_count":8,"bounds":{"left":0.6037234,"top":0.72625697,"width":0.01662234,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"ще станат конфликти","depth":23,"bounds":{"left":0.53324467,"top":0.7589784,"width":0.050199468,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.53324467,"top":0.7589784,"width":0.0043218085,"height":0.014365523}},{"char_start":1,"char_count":18,"bounds":{"left":0.5375665,"top":0.7589784,"width":0.045545213,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"James Graham","depth":22,"bounds":{"left":0.54787236,"top":0.8036712,"width":0.031914894,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.8036712,"width":0.0019946808,"height":0.014365523}},{"char_start":1,"char_count":11,"bounds":{"left":0.54986703,"top":0.8036712,"width":0.029920213,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.54787236,"top":0.820431,"width":0.00731383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":22,"bounds":{"left":0.60172874,"top":0.80606544,"width":0.018284574,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.60172874,"top":0.80606544,"width":0.0023271276,"height":0.013567438}},{"char_start":1,"char_count":8,"bounds":{"left":0.6037234,"top":0.80606544,"width":0.01662234,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"Cheers!","depth":23,"bounds":{"left":0.53324467,"top":0.8387869,"width":0.016954787,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.53324467,"top":0.8387869,"width":0.0033244682,"height":0.014365523}},{"char_start":1,"char_count":6,"bounds":{"left":0.5365692,"top":0.8387869,"width":0.013297873,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"Tuesday, May 12th","depth":21,"bounds":{"left":0.55851066,"top":0.8922586,"width":0.036236703,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.55851066,"top":0.8930567,"width":0.0023271276,"height":0.012769354}},{"char_start":1,"char_count":16,"bounds":{"left":0.56083775,"top":0.8930567,"width":0.033909574,"height":0.012769354}}],"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":22,"bounds":{"left":0.54787236,"top":0.9377494,"width":0.028922873,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.54787236,"top":0.9377494,"width":0.0026595744,"height":0.014365523}},{"char_start":1,"char_count":11,"bounds":{"left":0.5505319,"top":0.9377494,"width":0.026263298,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.54787236,"top":0.9545092,"width":0.00731383,"height":0.012769354},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Replied","depth":22,"bounds":{"left":0.58776593,"top":0.94014364,"width":0.012965426,"height":0.011971269},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58776593,"top":0.94094175,"width":0.0023271276,"height":0.011971269}},{"char_start":1,"char_count":6,"bounds":{"left":0.5900931,"top":0.94094175,"width":0.010638298,"height":0.011971269}}],"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.6047208,"top":0.94014364,"width":0.015292553,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.6047208,"top":0.94014364,"width":0.0023271276,"height":0.013567438}},{"char_start":1,"char_count":6,"bounds":{"left":0.60671544,"top":0.94014364,"width":0.013630319,"height":0.013567438}}],"role_description":"text"},{"role":"AXStaticText","text":"сега всичко е 6","depth":23,"bounds":{"left":0.53324467,"top":0.9728651,"width":0.034574468,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.53324467,"top":0.9728651,"width":0.0023271276,"height":0.014365523}},{"char_start":1,"char_count":14,"bounds":{"left":0.5355718,"top":0.9728651,"width":0.032247342,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.026595745,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Reacted in","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":22,"bounds":{"left":0.56981385,"top":0.9952115,"width":0.027260639,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.6047208,"top":0.9952115,"width":0.015292553,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"You:","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"може ли един approve","depth":23,"bounds":{"left":0.54388297,"top":0.9952115,"width":0.05285904,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/app/pull/12024","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.08676862,"height":0.0007980846},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/12024","depth":24,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.08676862,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with white check mark emoji","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":24,"bounds":{"left":0.5425532,"top":0.9952115,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.03523936,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.00731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.6047208,"top":0.9952115,"width":0.015292553,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"И другата седмица имаме презднтации пред борда в Лондон и съм до никъде","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.08610372,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.03523936,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Reacted in","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.56848407,"top":0.9952115,"width":0.00731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.6047208,"top":0.9952115,"width":0.015292553,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"You:","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ако трябва да се пипне и в кода ще си направя тикет","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.08510638,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with +1 emoji","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":24,"bounds":{"left":0.5425532,"top":0.9952115,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.038231384,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.00731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.6047208,"top":0.9952115,"width":0.015292553,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ще го видя","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.025265958,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.038231384,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Reacted in","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.019946808,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.56848407,"top":0.9952115,"width":0.00731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.6047208,"top":0.9952115,"width":0.015292553,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"You:","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.009640957,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ето го и репорт","depth":23,"bounds":{"left":0.54388297,"top":0.9952115,"width":0.03557181,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"…","depth":23,"bounds":{"left":0.5794548,"top":0.9952115,"width":0.0039893617,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with +1 emoji","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.014295213,"height":0.0007980846},"on_screen":true,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":24,"bounds":{"left":0.5425532,"top":0.9952115,"width":0.0023271276,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.034574468,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DM","depth":22,"bounds":{"left":0.54787236,"top":0.9952115,"width":0.00731383,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Tuesday","depth":22,"bounds":{"left":0.6047208,"top":0.9952115,"width":0.015292553,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Huddle ?","depth":23,"bounds":{"left":0.53324467,"top":0.9952115,"width":0.019614361,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Select a notification to view the details.","depth":17,"bounds":{"left":0.7712766,"top":0.5171588,"width":0.08577128,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.7712766,"top":0.5171588,"width":0.0029920214,"height":0.014365523}},{"char_start":1,"char_count":41,"bounds":{"left":0.77393615,"top":0.5171588,"width":0.08344415,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"Processing uploaded file… complete! Message ready to be sent.","depth":11,"bounds":{"left":0.5,"top":0.9992019,"width":0.022938829,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"bounds":{"left":0.5,"top":0.9992019,"width":0.01761968,"height":0.0007980846},"on_screen":true,"role_description":"text"}]...
|
1742058313930472269
|
-5958566264338301885
|
visual_change
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
All, 4 unread
DMs
Add new tab
Stefka Stoyanova
DM
Mark as unread
Clear
More actions
здарсти Лукаш, ще направиш ли стори да ъпгрейднем Pipedrive SDK (ако може да напишеш от коя на коя версия)
…
Yesterday
Mario Georgiev
DM
Yesterday
тенк ю вери мъч, махнах му crm seat-a и има достъп, ще го имам напредвид вече че явно бие такава грешка когато фрии акаунта expir-ne или нещо подобно и няма особен workaround
Jira Cloud
App
Mark as unread
Clear
More actions
@Stefka Stoyanova
@Stefka Stoyanova
assigned a Technical Story from you ⟶ Unassigned
…
Vasil Vasilev
DM
Replied
Yesterday
добреее, значи трябва да има процес, който чете от redis и налива в Elastic Search
Review Toast
App
Yesterday
PR review requested by @stefka-jiminny on @nikolaybiaivanov's PR
Nikolay Ivanov
DM
Yesterday
ще станат конфликти
James Graham
DM
Yesterday
Cheers!
Tuesday, May 12th
Stoyan Tanev
DM
Replied
Tuesday
сега всичко е 6
Vasil Vasilev
Reacted in
platform-inner-team
Tuesday
You:
може ли един approve
https://github.com/jiminny/app/pull/12024
https://github.com/jiminny/app/pull/12024
1 reaction, react with white check mark emoji
1
Galya Dimitrova
DM
Tuesday
И другата седмица имаме презднтации пред борда в Лондон и съм до никъде
Galya Dimitrova
Reacted in
DM
Tuesday
You:
ако трябва да се пипне и в кода ще си направя тикет
1 reaction, react with +1 emoji
1
Steliyan Georgiev
DM
Tuesday
ще го видя
Steliyan Georgiev
Reacted in
DM
Tuesday
You:
ето го и репорт
…
1 reaction, react with +1 emoji
1
Petko Kashinski
DM
Tuesday
Huddle ?
Select a notification to view the details.
Processing uploaded file… complete! Message ready to be sent.
Channel
SlackFavouritesjiminny() AirDrop• RecentsA Application9 Document• iCloud Drive992 Svnc tolde0 DXP4800PLUS-B5F A• Orange• Red• Yellov• Greer• Blue• Purple• All Tags.mistonWindowHelpe System Audio (output2026-05-1217-30-28.mp4•1 MacBook Pro Micronhone (inout) 2026-05-12 17-29-58.mn4D System Audio (output)_2026-05-12_17-29-58.mp40 MacBook Pro Microphone (input) 2026-05-12 17-29-28.mp401 Svstem Audio (outout) 2026-05-12 17-29-28.mo4• MacBook Pro Microphone (input) 2026-05-12_17-28-58.mp4• System Audio (output)_2026-05-12_17-28-58.mp4• MacBook Pro Microphone (input)_ 2026-05-12_17-28-28.mp4|• System Audio (output)_2026-05-12_17-28-28.mp4(input)_2026-05-12_17-27-58.mp4• System Audio (output) 2026-05-12 17-27-58.mp401 MacBook Pro Micronhone (inout) 2026-05-12 17-27-28 mo4D System Audio (output)_2026-05-12_17-27-28.mp4• MacBook Pro Microphone (input)_2026-05-12_17-26-58.mp4• System Audio (outout) 2026-05-1217-26-58.mp4• MacBook Pro Microphone (input)_ 2026-05-12_17-26-28.mp4System Audio (output)_2026-esystem Audio (output 2026-05-121/-20-58.mp4• MacBook Pro Microphone (input)_2026-05-12_17-25-58.mp4D System Audio (output)_2026-05-12_17-25-28.mp4• MacBook Pro Microphone (input) 2026-05-12_17-25-28.mp40 Svstem Audio (outout) 2026-05-12 17-24-58.mo4• MacBook Pro Microphone (input) 2026-05-12_17-24-58.mp4MacBook Pro Microphone (input)_2026-05-12_17-24-28.mp4esystem Audio (output 2026-05-1217-24-28.mp4@ MacRook Dro Micronhone (innut) 2026-05-12 17-22-58 mn4• Svstem Audio (outout) 2026-05-12 17-23-58.mp4• масьоок Pro Micropnone (input 2020-05-12 1/-23-28.mp401 Svstem Audio (outout 2026-05-2 17-23-28.mo4|@ MacBook Pro Microphone (input) 2026-05-12_17-22-58.mp4D System Audio (output)_2026-05-12_17-22-58.mp4• MacBook Pro Microphone (input) _ 2026-05-12_17-22-28.mp4@1 Suctem Audio (outnut) 2026-05-12 17-22-28 mn/lD System Audio (output) _2026-05-12_17-21-56.mp4• MacBook Pro Microphone (input) 2026-05-12 17-21-56.mp401 Lakvlak bose ac25 l| (inout) 2026-05-12 14-22-38.mo4• LakyLak bose qc35 Il (input)_2026-05-12_14-21-38.mp4LakyLak bose qc35 II (input)_2026-05-12_14-15-09.mp4l Lakylak bose accs inout2026-05-12 14-10-40.mo4|al lakvlak hace ac25 ll finnut) 2026-05-12 11-09-11 mл/• MacBook Prine (inout) 2026-05-12 13-35-39.mр4• MacBook Pro Microphone (input) 2026-05-12_13-00-11.mp4@1 MacBook Pro Micronhone (inout) 2026-05-12 12-59-41.mo4• MacBook Pro Microphone (input)_2026-05-12_12-59-11.mp4• MacBook Pro Microphone (input) _2026-05-12_12-22-51.mр401 MacBook Pro Microphone (inout) 2026-05-12 12-22-21.mo4@ MacBook Pro Microphone (input) 2026-05-12 12-21-51.mp4• MacBook Pro Microphone• MacBook Pro Microphone (input) 2026-05-12 12-20-51.mp4@ MacRook Pro Micronhone (innut) 2026-05-12 12-20-21 mn/• MacBook Pro Microphone (input)_2026-05-12_12-19-52.mp4• MacBook Pro Microphone (input) 2026-05-12_ 12-19-22.mр401 MacBook Pro Micronhone (inout) 2026-05-12 12-18-52 mo4a Morponl Dra Micranhono hool 0006 06 70 42.19.29 мл/.v Q SearchDate Modified12 iay Zuzo dl ZU.ou12 May 2026 at 20:3012 Mav 2026 at 20:3012 May 2026 at 20:3012 May 2026 at 20:2912 May 2026 at 20:2912 May 2026 at 20:2912 May 2026 at 20:2912 May 2026 at 20:2812 May 2026 at 20:2812 May 2026 at 20:2812 May 2026 at 20:2812 Mav 2026 at 20:2712 May 2026 at 20:2712 May 2026 at 20:2712 May 2026 at 20:2712 May 2026 at 20:2612 May 2026 at 20:2612 May 2026 at 20.2612 Mav 2026 at 20:2612 May 2026 at 20:2512 May 2026 at 20:2512 May 2026 at 20:2512 May 2026 at 20:2512 May 2026 at 20:2412 Mav 2026 at 20:2412 May 2026 at 20:2412 May 2026 at 20:2312 May 2026 at 20:2312 May 2026 at 20.2212 Mav 2026 at 20:2212 May 2026 at 20:2212 May 2026 al 20:2412 Mav 2026 at 17:2312 May 2026 at 17:2212 May 2026 at 17:1512 Mav 2026 at 17:11112 Mav 2026 at 17:0812 Mav 2026 at 16:3612 May 2026 at 16:0012 Mav 2026 at 16:00.12 May 2026 at 15:5912 May 2026 at 15:2312 Mav 2026 at 15:2212 Mav 2026 at 15:2912 May 2026 at 15:2112 Mav 2026 at 15:20112 May 2026 at 15:2012 May 2026 at 15:1912 Mav 2026 at 15:19MA 2006 C+ 46.1012 May 2026 at 15:184990 items. 13.63 GB avZUUNe5 KBMPEG-4 movie207 KB MPEG-4 movie5 KB205 KbMPEG-4 movie5 KBMPEG-4 movie213 KB MPEG-4 movie5 KE207 KEMPEG-4 movie5KR MDEG_A movid198 KBMPEG-4 movie209 KB.5 KBMPEG-4 movieMPEG-4 movie210 KB5 K:206 KB MPEG-4 movie5 KBbKbMPEG-4 movie211 KRIMPEG-A movie5 KBMPEG-4 movie200 KB5 K:202 kpMDEC.A movid206 KBMPEG-4 movieMDEG-A movie200 KR5 KBMPEG-4 movie204 KBMPEG-4 movie200 KB MPEG-4 movie5 KB199 KE5 KRMPEG-4 movieMDEG-A movid5 KB199 KB211 KE226 KBMDEC.A movid203 KB212 KMPEG-4 movie221 KR213 KB199 Kb208 KEMDSG-A movidMPEG-4 moviMPEG-4 movie207 KB MPEG-4 movie247 KB216 K:MPEG-4 movie215 KR219 KBZ16 K3MP=G-4 movie218 KRIMPEG-A movie232 KB MPEG-4 movie217 KB210 KEMPEG-4 movien10 vo TMDEeA movitHomeDMSMore<S0 hlDally - Platorm• in 1/m100% 52Inu 14 May 9-20.30@ Describe what you are looking forAC.MIVAll 4DMs+Stefka Stoyanovaзлаости / укаш. ше направиш листори ла ългрейлнем Pidedrive SDK.IYesterdayMario GeorgievYesterdayo-DMтенк ю вери мъч, махнах му crm seat-аиима достьл, ще го имам ...Jira Cloud@Stefka Stoyanova assigned aTechnical Story from you →.HO DMVasil VasilevReplied Yesterdayдобреее, значи трябва да имаппошеє който чете от redis и наливReview ToastYesterdavPR review requested by @stefka-liminnv on @nikolavhiaivanov's PRNikolav IvanovVecterdavще станат коноликтиS omeames GrahamVoctordavCheerçiTuesdav. Mav 12thCtavan ThnowReplied Tuesdavcors oeuuvA ALSelect a notification to view the details...
|
38772
|
NULL
|
NULL
|
NULL
|
|
38774
|
1439
|
60
|
2026-05-14T06:28:38.651265+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740118651_m2.jpg...
|
Firefox
|
Usage | Windsurf — Work
|
1
|
windsurf.com/subscription/usage
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Usage | Windsurf
Usage | Windsurf
Close tab
JY-208 Usage | Windsurf
Usage | Windsurf
Close tab
JY-20891 add support for secondary email by LakyLak · Pull Request #12073 · jiminny/app
JY-20891 add support for secondary email by LakyLak · Pull Request #12073 · jiminny/app
[SRD-6848] Sidekick SMS issue - Jira
[SRD-6848] Sidekick SMS issue - Jira
Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Dependabot alerts · jiminny/prophet
Dependabot alerts · jiminny/prophet
[JY-19958] Upgrade BE libraries - May - Jira
[JY-19958] Upgrade BE libraries - May - Jira
[JY-20773] User Pilot not receiving events on report generated - Jira
[JY-20773] User Pilot not receiving events on report generated - Jira
JY-19957 | Remove abanded sympfony debug, compose upgrade by nikolaybiaivanov · Pull Request #12022 · jiminny/app
JY-19957 | Remove abanded sympfony debug, compose upgrade by nikolaybiaivanov · Pull Request #12022 · jiminny/app
TypeError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218 — jiminny — app
TypeError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218 — jiminny — app
Userpilot | Ask Jiminny Report Generated
Userpilot | Ask Jiminny Report Generated
[JY-19957] Upgrade BE libraries - Apr - Jira
[JY-19957] Upgrade BE libraries - Apr - Jira
Dependabot alerts · jiminny/app
Dependabot alerts · jiminny/app
[JY-20891] Sidekick SMS issue - Jira
[JY-20891] Sidekick SMS issue - Jira
[SRD-6849] Recorded call does not appear on the dashboard - Jira
[SRD-6849] Recorded call does not appear on the dashboard - Jira
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Useful commands - Engineering - Confluence
Useful commands - Engineering - Confluence
Dev Tools - Elastic
Dev Tools - Elastic
Jiminny
Jiminny
[SRD-6853] Moxso - Potential deal stages bug - Jira
[SRD-6853] Moxso - Potential deal stages bug - Jira
CloudWatch | eu-west-1
CloudWatch | eu-west-1
CloudWatch | eu-west-1
CloudWatch | eu-west-1
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Windsurf
PRODUCTS
PRODUCTS
ENTERPRISE
ENTERPRISE
PRICING
PRICING
BLOG
BLOG
RESOURCES
RESOURCES
COMPANY
COMPANY
L
L
DOWNLOAD
DOWNLOAD
ACCOUNT
Profile
Profile
Notifications
Notifications
Settings
Settings
SUBSCRIPTION
Usage
Usage
FEATURES
Deploys
Deploys
Conversation Shares
Conversation Shares
Log out
Usage
Usage
Windsurf Usage Summary
Next billing cycle is tomorrow.
Your daily quota
97.00
% remaining
Daily quota resets every day and usage resumes once quota refreshes.
Resets
14 May, 11:00 EEST
Your weekly quota
31.00
% remaining
Weekly quota resets every week and can still limit usage after the daily reset.
Resets
17 May, 11:00 EEST
Extra usage balance available
$
-0.11
Once the quota is reached, Windsurf can continue to be used with free models.
To continue using premium models,
purchase extra usage
.
Purchase usage...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Usage | Windsurf","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Usage | Windsurf","depth":5,"bounds":{"left":0.013297873,"top":0.06304868,"width":0.029920213,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.05905826,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20891 add support for secondary email by LakyLak · Pull Request #12073 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20891 add support for secondary email by LakyLak · Pull Request #12073 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.09577015,"width":0.15658244,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6848] Sidekick SMS issue - Jira","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6848] Sidekick SMS issue - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.12849163,"width":0.06632314,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.16121309,"width":0.10106383,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Dependabot alerts · jiminny/prophet","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dependabot alerts · jiminny/prophet","depth":5,"bounds":{"left":0.013297873,"top":0.19393456,"width":0.06216755,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-19958] Upgrade BE libraries - May - Jira","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-19958] Upgrade BE libraries - May - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.22665602,"width":0.07762633,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20773] User Pilot not receiving events on report generated - Jira","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20773] User Pilot not receiving events on report generated - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.25937748,"width":0.1200133,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-19957 | Remove abanded sympfony debug, compose upgrade by nikolaybiaivanov · Pull Request #12022 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-19957 | Remove abanded sympfony debug, compose upgrade by nikolaybiaivanov · Pull Request #12022 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.29209897,"width":0.20977394,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"TypeError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218 — jiminny — app","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"TypeError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218 — jiminny — app","depth":5,"bounds":{"left":0.013297873,"top":0.32482043,"width":0.40475398,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Ask Jiminny Report Generated","depth":4,"bounds":{"left":0.0,"top":0.3463687,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Ask Jiminny Report Generated","depth":5,"bounds":{"left":0.013297873,"top":0.3575419,"width":0.07164229,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-19957] Upgrade BE libraries - Apr - Jira","depth":4,"bounds":{"left":0.0,"top":0.3790902,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-19957] Upgrade BE libraries - Apr - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.39026338,"width":0.076296546,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Dependabot alerts · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.41181165,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dependabot alerts · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.42298484,"width":0.05501995,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20891] Sidekick SMS issue - Jira","depth":4,"bounds":{"left":0.0,"top":0.4445331,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20891] Sidekick SMS issue - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.4557063,"width":0.064494684,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6849] Recorded call does not appear on the dashboard - Jira","depth":4,"bounds":{"left":0.0,"top":0.4772546,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6849] Recorded call does not appear on the dashboard - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.4884278,"width":0.11735372,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.509976,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.5211492,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.54269755,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.55387074,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.575419,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.5865922,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.60814047,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.61931366,"width":0.12898937,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Useful commands - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.6408619,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Useful commands - Engineering - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.6520351,"width":0.079288565,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Dev Tools - Elastic","depth":4,"bounds":{"left":0.0,"top":0.6735834,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dev Tools - Elastic","depth":5,"bounds":{"left":0.013297873,"top":0.6847566,"width":0.032247342,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.70630485,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.71747804,"width":0.013131649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6853] Moxso - Potential deal stages bug - Jira","depth":4,"bounds":{"left":0.0,"top":0.7390263,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6853] Moxso - Potential deal stages bug - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.7501995,"width":0.09158909,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | eu-west-1","depth":4,"bounds":{"left":0.0,"top":0.7717478,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudWatch | eu-west-1","depth":5,"bounds":{"left":0.013297873,"top":0.782921,"width":0.041722074,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | eu-west-1","depth":4,"bounds":{"left":0.0,"top":0.8044693,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudWatch | eu-west-1","depth":5,"bounds":{"left":0.013297873,"top":0.8156425,"width":0.041722074,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.8387869,"width":0.07413564,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Windsurf","depth":8,"bounds":{"left":0.3337766,"top":0.07581804,"width":0.049534574,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"PRODUCTS","depth":9,"bounds":{"left":0.42386967,"top":0.06304868,"width":0.03756649,"height":0.0415004},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"PRODUCTS","depth":10,"bounds":{"left":0.42785904,"top":0.07661612,"width":0.024268618,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ENTERPRISE","depth":9,"bounds":{"left":0.46675533,"top":0.06304868,"width":0.043550532,"height":0.0415004},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ENTERPRISE","depth":10,"bounds":{"left":0.47074467,"top":0.07661612,"width":0.03025266,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"PRICING","depth":9,"bounds":{"left":0.515625,"top":0.06304868,"width":0.029089095,"height":0.0415004},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"PRICING","depth":10,"bounds":{"left":0.51961434,"top":0.07661612,"width":0.021110373,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"BLOG","depth":9,"bounds":{"left":0.5500333,"top":0.06304868,"width":0.020113032,"height":0.0415004},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"BLOG","depth":10,"bounds":{"left":0.5540226,"top":0.07661612,"width":0.012134309,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RESOURCES","depth":9,"bounds":{"left":0.57546544,"top":0.06304868,"width":0.04055851,"height":0.0415004},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"RESOURCES","depth":10,"bounds":{"left":0.5794548,"top":0.07661612,"width":0.027260639,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"COMPANY","depth":9,"bounds":{"left":0.6213431,"top":0.06304868,"width":0.034408245,"height":0.0415004},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"COMPANY","depth":10,"bounds":{"left":0.6253325,"top":0.07661612,"width":0.021110373,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"L","depth":8,"bounds":{"left":0.93151593,"top":0.06464485,"width":0.015957447,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"L","depth":11,"bounds":{"left":0.9383311,"top":0.07661612,"width":0.002493351,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"DOWNLOAD","depth":8,"bounds":{"left":0.94913566,"top":0.0518755,"width":0.05086434,"height":0.06384677},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"DOWNLOAD","depth":9,"bounds":{"left":0.94913566,"top":0.0518755,"width":0.05086434,"height":0.06384677},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ACCOUNT","depth":11,"bounds":{"left":0.33776596,"top":0.1660016,"width":0.021110373,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Profile","depth":10,"bounds":{"left":0.3324468,"top":0.18355946,"width":0.06582447,"height":0.029130088},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Profile","depth":13,"bounds":{"left":0.33776596,"top":0.1895451,"width":0.014960106,"height":0.016759777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Notifications","depth":10,"bounds":{"left":0.3324468,"top":0.21588188,"width":0.06582447,"height":0.02952913},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notifications","depth":13,"bounds":{"left":0.33776596,"top":0.22226655,"width":0.030585106,"height":0.016759777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":10,"bounds":{"left":0.3324468,"top":0.24860336,"width":0.06582447,"height":0.029130088},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":13,"bounds":{"left":0.33776596,"top":0.254988,"width":0.019780586,"height":0.016759777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SUBSCRIPTION","depth":11,"bounds":{"left":0.33776596,"top":0.3028731,"width":0.036236703,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Usage","depth":10,"bounds":{"left":0.3324468,"top":0.3200319,"width":0.06582447,"height":0.02952913},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Usage","depth":13,"bounds":{"left":0.33776596,"top":0.3264166,"width":0.01462766,"height":0.016759777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"FEATURES","depth":11,"bounds":{"left":0.33776596,"top":0.37430167,"width":0.024102394,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deploys","depth":10,"bounds":{"left":0.3324468,"top":0.3914605,"width":0.06582447,"height":0.02952913},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deploys","depth":13,"bounds":{"left":0.33776596,"top":0.39784518,"width":0.019115692,"height":0.016759777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Conversation Shares","depth":10,"bounds":{"left":0.3324468,"top":0.42418197,"width":0.06582447,"height":0.029130088},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Conversation Shares","depth":13,"bounds":{"left":0.33776596,"top":0.43056664,"width":0.049700797,"height":0.016759777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Log out","depth":10,"bounds":{"left":0.33776596,"top":0.9577015,"width":0.017785905,"height":0.016759777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Usage","depth":9,"bounds":{"left":0.41422874,"top":0.16679968,"width":0.33178192,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Usage","depth":10,"bounds":{"left":0.41422874,"top":0.16679968,"width":0.039727394,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Windsurf Usage Summary","depth":11,"bounds":{"left":0.42519948,"top":0.24381484,"width":0.10704787,"height":0.02952913},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Next billing cycle is tomorrow.","depth":11,"bounds":{"left":0.42519948,"top":0.28611332,"width":0.06100399,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your daily quota","depth":11,"bounds":{"left":0.42519948,"top":0.3196329,"width":0.047539894,"height":0.021149242},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"97.00","depth":11,"bounds":{"left":0.68650264,"top":0.32282522,"width":0.01512633,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"% remaining","depth":11,"bounds":{"left":0.701629,"top":0.32282522,"width":0.033410903,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily quota resets every day and usage resumes once quota refreshes.","depth":11,"bounds":{"left":0.42519948,"top":0.34357542,"width":0.14577793,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resets","depth":11,"bounds":{"left":0.68351066,"top":0.34357542,"width":0.014960106,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14 May, 11:00 EEST","depth":11,"bounds":{"left":0.6984708,"top":0.34357542,"width":0.03656915,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your weekly quota","depth":11,"bounds":{"left":0.42519948,"top":0.386672,"width":0.053856384,"height":0.021149242},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31.00","depth":11,"bounds":{"left":0.68650264,"top":0.38986433,"width":0.01512633,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"% remaining","depth":11,"bounds":{"left":0.701629,"top":0.38986433,"width":0.033410903,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Weekly quota resets every week and can still limit usage after the daily reset.","depth":11,"bounds":{"left":0.42519948,"top":0.41061452,"width":0.15774602,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resets","depth":11,"bounds":{"left":0.6838431,"top":0.41061452,"width":0.014960106,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17 May, 11:00 EEST","depth":11,"bounds":{"left":0.6988032,"top":0.41061452,"width":0.036236703,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Extra usage balance available","depth":11,"bounds":{"left":0.42519948,"top":0.46049482,"width":0.086269945,"height":0.021149242},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":11,"bounds":{"left":0.71758646,"top":0.46049482,"width":0.0038231383,"height":0.021149242},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-0.11","depth":11,"bounds":{"left":0.72140956,"top":0.46049482,"width":0.013630319,"height":0.021149242},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the quota is reached, Windsurf can continue to be used with free models.","depth":11,"bounds":{"left":0.42519948,"top":0.4888268,"width":0.16373006,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"To continue using premium models,","depth":11,"bounds":{"left":0.42519948,"top":0.50359136,"width":0.0731383,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"purchase extra usage","depth":11,"bounds":{"left":0.49950132,"top":0.50359136,"width":0.044215426,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":11,"bounds":{"left":0.5437167,"top":0.50359136,"width":0.00083111704,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Purchase usage","depth":11,"bounds":{"left":0.68766624,"top":0.48762968,"width":0.04737367,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false}]...
|
6984495974967014510
|
6355800457719906884
|
visual_change
|
accessibility
|
NULL
|
Usage | Windsurf
Usage | Windsurf
Close tab
JY-208 Usage | Windsurf
Usage | Windsurf
Close tab
JY-20891 add support for secondary email by LakyLak · Pull Request #12073 · jiminny/app
JY-20891 add support for secondary email by LakyLak · Pull Request #12073 · jiminny/app
[SRD-6848] Sidekick SMS issue - Jira
[SRD-6848] Sidekick SMS issue - Jira
Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Dependabot alerts · jiminny/prophet
Dependabot alerts · jiminny/prophet
[JY-19958] Upgrade BE libraries - May - Jira
[JY-19958] Upgrade BE libraries - May - Jira
[JY-20773] User Pilot not receiving events on report generated - Jira
[JY-20773] User Pilot not receiving events on report generated - Jira
JY-19957 | Remove abanded sympfony debug, compose upgrade by nikolaybiaivanov · Pull Request #12022 · jiminny/app
JY-19957 | Remove abanded sympfony debug, compose upgrade by nikolaybiaivanov · Pull Request #12022 · jiminny/app
TypeError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218 — jiminny — app
TypeError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218 — jiminny — app
Userpilot | Ask Jiminny Report Generated
Userpilot | Ask Jiminny Report Generated
[JY-19957] Upgrade BE libraries - Apr - Jira
[JY-19957] Upgrade BE libraries - Apr - Jira
Dependabot alerts · jiminny/app
Dependabot alerts · jiminny/app
[JY-20891] Sidekick SMS issue - Jira
[JY-20891] Sidekick SMS issue - Jira
[SRD-6849] Recorded call does not appear on the dashboard - Jira
[SRD-6849] Recorded call does not appear on the dashboard - Jira
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Useful commands - Engineering - Confluence
Useful commands - Engineering - Confluence
Dev Tools - Elastic
Dev Tools - Elastic
Jiminny
Jiminny
[SRD-6853] Moxso - Potential deal stages bug - Jira
[SRD-6853] Moxso - Potential deal stages bug - Jira
CloudWatch | eu-west-1
CloudWatch | eu-west-1
CloudWatch | eu-west-1
CloudWatch | eu-west-1
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Windsurf
PRODUCTS
PRODUCTS
ENTERPRISE
ENTERPRISE
PRICING
PRICING
BLOG
BLOG
RESOURCES
RESOURCES
COMPANY
COMPANY
L
L
DOWNLOAD
DOWNLOAD
ACCOUNT
Profile
Profile
Notifications
Notifications
Settings
Settings
SUBSCRIPTION
Usage
Usage
FEATURES
Deploys
Deploys
Conversation Shares
Conversation Shares
Log out
Usage
Usage
Windsurf Usage Summary
Next billing cycle is tomorrow.
Your daily quota
97.00
% remaining
Daily quota resets every day and usage resumes once quota refreshes.
Resets
14 May, 11:00 EEST
Your weekly quota
31.00
% remaining
Weekly quota resets every week and can still limit usage after the daily reset.
Resets
17 May, 11:00 EEST
Extra usage balance available
$
-0.11
Once the quota is reached, Windsurf can continue to be used with free models.
To continue using premium models,
purchase extra usage
.
Purchase usage...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38775
|
1437
|
49
|
2026-05-14T06:28:39.763198+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740119763_m1.jpg...
|
Firefox
|
Usage | Windsurf — Work
|
1
|
windsurf.com/subscription/usage
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Usage | Windsurf
Usage | Windsurf
Close tab
JY-208 Usage | Windsurf
Usage | Windsurf
Close tab
JY-20891 add support for secondary email by LakyLak · Pull Request #12073 · jiminny/app
JY-20891 add support for secondary email by LakyLak · Pull Request #12073 · jiminny/app
[SRD-6848] Sidekick SMS issue - Jira
[SRD-6848] Sidekick SMS issue - Jira
Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Dependabot alerts · jiminny/prophet
Dependabot alerts · jiminny/prophet
[JY-19958] Upgrade BE libraries - May - Jira
[JY-19958] Upgrade BE libraries - May - Jira
[JY-20773] User Pilot not receiving events on report generated - Jira
[JY-20773] User Pilot not receiving events on report generated - Jira
JY-19957 | Remove abanded sympfony debug, compose upgrade by nikolaybiaivanov · Pull Request #12022 · jiminny/app
JY-19957 | Remove abanded sympfony debug, compose upgrade by nikolaybiaivanov · Pull Request #12022 · jiminny/app
TypeError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218 — jiminny — app
TypeError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218 — jiminny — app
Userpilot | Ask Jiminny Report Generated
Userpilot | Ask Jiminny Report Generated
[JY-19957] Upgrade BE libraries - Apr - Jira
[JY-19957] Upgrade BE libraries - Apr - Jira
Dependabot alerts · jiminny/app
Dependabot alerts · jiminny/app
[JY-20891] Sidekick SMS issue - Jira
[JY-20891] Sidekick SMS issue - Jira
[SRD-6849] Recorded call does not appear on the dashboard - Jira
[SRD-6849] Recorded call does not appear on the dashboard - Jira
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Useful commands - Engineering - Confluence
Useful commands - Engineering - Confluence
Dev Tools - Elastic
Dev Tools - Elastic
Jiminny
Jiminny
[SRD-6853] Moxso - Potential deal stages bug - Jira
[SRD-6853] Moxso - Potential deal stages bug - Jira
CloudWatch | eu-west-1
CloudWatch | eu-west-1
CloudWatch | eu-west-1
CloudWatch | eu-west-1
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Windsurf
PRODUCTS
PRODUCTS
ENTERPRISE
ENTERPRISE
PRICING
PRICING
BLOG
BLOG
RESOURCES
RESOURCES
COMPANY
COMPANY
L
L
DOWNLOAD
DOWNLOAD
ACCOUNT
Profile
Profile
Notifications
Notifications
Settings
Settings
SUBSCRIPTION
Usage
Usage
FEATURES
Deploys
Deploys
Conversation Shares
Conversation Shares
Log out
Usage
Usage
Windsurf Usage Summary
Next billing cycle is tomorrow.
Your daily quota
97.00
% remaining
Daily quota resets every day and usage resumes once quota refreshes.
Resets
14 May, 11:00 EEST
Your weekly quota
31.00
% remaining
Weekly quota resets every week and can still limit usage after the daily reset.
Resets
17 May, 11:00 EEST
Extra usage balance available
$
-0.11
Once the quota is reached, Windsurf can continue to be used with free models.
To continue using premium models,
purchase extra usage
.
Purchase usage...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Usage | Windsurf","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Usage | Windsurf","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20891 add support for secondary email by LakyLak · Pull Request #12073 · jiminny/app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20891 add support for secondary email by LakyLak · Pull Request #12073 · jiminny/app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6848] Sidekick SMS issue - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6848] Sidekick SMS issue - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Dependabot alerts · jiminny/prophet","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dependabot alerts · jiminny/prophet","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-19958] Upgrade BE libraries - May - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-19958] Upgrade BE libraries - May - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20773] User Pilot not receiving events on report generated - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20773] User Pilot not receiving events on report generated - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-19957 | Remove abanded sympfony debug, compose upgrade by nikolaybiaivanov · Pull Request #12022 · jiminny/app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-19957 | Remove abanded sympfony debug, compose upgrade by nikolaybiaivanov · Pull Request #12022 · jiminny/app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"TypeError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218 — jiminny — app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"TypeError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218 — jiminny — app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Ask Jiminny Report Generated","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Ask Jiminny Report Generated","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-19957] Upgrade BE libraries - Apr - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-19957] Upgrade BE libraries - Apr - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Dependabot alerts · jiminny/app","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dependabot alerts · jiminny/app","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20891] Sidekick SMS issue - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20891] Sidekick SMS issue - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6849] Recorded call does not appear on the dashboard - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6849] Recorded call does not appear on the dashboard - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Useful commands - Engineering - Confluence","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Useful commands - Engineering - Confluence","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Dev Tools - Elastic","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dev Tools - Elastic","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6853] Moxso - Potential deal stages bug - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6853] Moxso - Potential deal stages bug - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | eu-west-1","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudWatch | eu-west-1","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | eu-west-1","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudWatch | eu-west-1","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Windsurf","depth":8,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"PRODUCTS","depth":9,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"PRODUCTS","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ENTERPRISE","depth":9,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ENTERPRISE","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"PRICING","depth":9,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"PRICING","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"BLOG","depth":9,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"BLOG","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RESOURCES","depth":9,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"RESOURCES","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"COMPANY","depth":9,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"COMPANY","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"L","depth":8,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"L","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"DOWNLOAD","depth":8,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"DOWNLOAD","depth":9,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ACCOUNT","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Profile","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Profile","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Notifications","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notifications","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SUBSCRIPTION","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Usage","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Usage","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"FEATURES","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deploys","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deploys","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Conversation Shares","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Conversation Shares","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Log out","depth":10,"bounds":{"left":0.14097223,"top":0.0,"width":0.03715278,"height":0.023333333},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Usage","depth":9,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Usage","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Windsurf Usage Summary","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Next billing cycle is tomorrow.","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your daily quota","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"97.00","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"% remaining","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily quota resets every day and usage resumes once quota refreshes.","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resets","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14 May, 11:00 EEST","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your weekly quota","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31.00","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"% remaining","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Weekly quota resets every week and can still limit usage after the daily reset.","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resets","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17 May, 11:00 EEST","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Extra usage balance available","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-0.11","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the quota is reached, Windsurf can continue to be used with free models.","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"To continue using premium models,","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"purchase extra usage","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Purchase usage","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false}]...
|
6984495974967014510
|
6355800457719906884
|
visual_change
|
accessibility
|
NULL
|
Usage | Windsurf
Usage | Windsurf
Close tab
JY-208 Usage | Windsurf
Usage | Windsurf
Close tab
JY-20891 add support for secondary email by LakyLak · Pull Request #12073 · jiminny/app
JY-20891 add support for secondary email by LakyLak · Pull Request #12073 · jiminny/app
[SRD-6848] Sidekick SMS issue - Jira
[SRD-6848] Sidekick SMS issue - Jira
Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Dependabot alerts · jiminny/prophet
Dependabot alerts · jiminny/prophet
[JY-19958] Upgrade BE libraries - May - Jira
[JY-19958] Upgrade BE libraries - May - Jira
[JY-20773] User Pilot not receiving events on report generated - Jira
[JY-20773] User Pilot not receiving events on report generated - Jira
JY-19957 | Remove abanded sympfony debug, compose upgrade by nikolaybiaivanov · Pull Request #12022 · jiminny/app
JY-19957 | Remove abanded sympfony debug, compose upgrade by nikolaybiaivanov · Pull Request #12022 · jiminny/app
TypeError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218 — jiminny — app
TypeError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218 — jiminny — app
Userpilot | Ask Jiminny Report Generated
Userpilot | Ask Jiminny Report Generated
[JY-19957] Upgrade BE libraries - Apr - Jira
[JY-19957] Upgrade BE libraries - Apr - Jira
Dependabot alerts · jiminny/app
Dependabot alerts · jiminny/app
[JY-20891] Sidekick SMS issue - Jira
[JY-20891] Sidekick SMS issue - Jira
[SRD-6849] Recorded call does not appear on the dashboard - Jira
[SRD-6849] Recorded call does not appear on the dashboard - Jira
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Useful commands - Engineering - Confluence
Useful commands - Engineering - Confluence
Dev Tools - Elastic
Dev Tools - Elastic
Jiminny
Jiminny
[SRD-6853] Moxso - Potential deal stages bug - Jira
[SRD-6853] Moxso - Potential deal stages bug - Jira
CloudWatch | eu-west-1
CloudWatch | eu-west-1
CloudWatch | eu-west-1
CloudWatch | eu-west-1
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Windsurf
PRODUCTS
PRODUCTS
ENTERPRISE
ENTERPRISE
PRICING
PRICING
BLOG
BLOG
RESOURCES
RESOURCES
COMPANY
COMPANY
L
L
DOWNLOAD
DOWNLOAD
ACCOUNT
Profile
Profile
Notifications
Notifications
Settings
Settings
SUBSCRIPTION
Usage
Usage
FEATURES
Deploys
Deploys
Conversation Shares
Conversation Shares
Log out
Usage
Usage
Windsurf Usage Summary
Next billing cycle is tomorrow.
Your daily quota
97.00
% remaining
Daily quota resets every day and usage resumes once quota refreshes.
Resets
14 May, 11:00 EEST
Your weekly quota
31.00
% remaining
Weekly quota resets every week and can still limit usage after the daily reset.
Resets
17 May, 11:00 EEST
Extra usage balance available
$
-0.11
Once the quota is reached, Windsurf can continue to be used with free models.
To continue using premium models,
purchase extra usage
.
Purchase usage...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38776
|
1437
|
50
|
2026-05-14T06:28:42.765423+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740122765_m1.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said yes I will do that. Is there a way to setup languages to transcription?","depth":21,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes I will do that. Is there a way to setup languages to transcription?","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As for setting up languages for transcription,","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes, you can configure it","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", but it helps to understand how ScreenPipe handles language natively first.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Transcription Engine Handles Language","depth":26,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Transcription Engine Handles Language","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses a","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"multilingual Whisper model","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and sets the language configuration to","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-Detect","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Advantage:","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Drawback:","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How to Force a Specific Language","depth":26,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How to Force a Specific Language","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are using the Desktop App UI:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open the ScreenPipe settings.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Navigate to the","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI/Transcription","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"section.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Look for the","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper Language","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Transcription Language","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dropdown.","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Change it from \"Auto\" to your specific language (e.g., English, Bulgarian, or Slovak).","depth":29,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are running ScreenPipe via CLI/Config:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can modify your underlying configuration (usually found in","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/pipe.json","depth":28,"bounds":{"left":0.0,"top":0.0,"width":0.134375,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:","depth":27,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Slovak)","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Bulgarian)","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(English)","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":23,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Redo","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share and export","depth":22,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":22,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextArea","text":"Ask Gemini","depth":20,"on_screen":true,"value":"Ask Gemini","help_text":"","role_description":"text entry area","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Gemini","depth":21,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open upload file menu","depth":20,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tools","depth":18,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open mode picker","depth":20,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pro","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Microphone","depth":19,"on_screen":true,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-4561217559374952988
|
8632611141304593373
|
visual_change
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or
Transcription Language
dropdown.
Change it from "Auto" to your specific language (e.g., English, Bulgarian, or Slovak).
If you are running ScreenPipe via CLI/Config:
You can modify your underlying configuration (usually found in
~/.screenpipe/pipe.json
or by passing a flag when starting the daemon) to force a specific language code. You would use the standard ISO language codes:
(Slovak)
(Bulgarian)
(English)
If you find yourself frequently jumping between those three languages, your best bet is to leave it on Auto-Detect and perhaps run a slightly larger, more accurate Whisper model (like Whisper 'Small' or 'Base' instead of 'Tiny') if your hardware has the headroom for it.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38777
|
1439
|
61
|
2026-05-14T06:28:44.722468+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740124722_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.06304868,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"bounds":{"left":0.013297873,"top":0.09577015,"width":0.029587766,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"bounds":{"left":0.013297873,"top":0.12849163,"width":0.036901597,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.16121309,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.05651596,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.013297873,"top":0.19393456,"width":0.040724736,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.013297873,"top":0.22665602,"width":0.03756649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"bounds":{"left":0.013297873,"top":0.25937748,"width":0.012134309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"bounds":{"left":0.013297873,"top":0.29209897,"width":0.1100399,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"bounds":{"left":0.013297873,"top":0.32482043,"width":0.05668218,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.34796488,"width":0.06333112,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.29321808,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.30518618,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"bounds":{"left":0.3025266,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.07280585,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.08610372,"top":0.10454908,"width":0.028590426,"height":0.030327214},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"bounds":{"left":0.0887633,"top":0.10973663,"width":0.021941489,"height":0.020351157},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.2613032,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"bounds":{"left":0.27460107,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.28789893,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.068484046,"top":0.14764565,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.068484046,"top":0.15003991,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.02642952,"height":0.016360734},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.22041224,"height":0.057861134},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"bounds":{"left":0.18035239,"top":0.0,"width":0.015292553,"height":0.016360734},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.22174202,"height":0.057861134},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"bounds":{"left":0.075465426,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"bounds":{"left":0.08610372,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"bounds":{"left":0.09674202,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"bounds":{"left":0.107380316,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"bounds":{"left":0.11801862,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"bounds":{"left":0.12566489,"top":0.0905826,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"bounds":{"left":0.14029256,"top":0.0905826,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said yes I will do that. Is there a way to setup languages to transcription?","depth":21,"bounds":{"left":0.16023937,"top":0.100159615,"width":0.15026596,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"bounds":{"left":0.068484046,"top":0.1009577,"width":0.019946808,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes I will do that. Is there a way to setup languages to transcription?","depth":23,"bounds":{"left":0.16023937,"top":0.10175578,"width":0.12849069,"height":0.035514764},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"bounds":{"left":0.3025266,"top":0.17039107,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"bounds":{"left":0.09208777,"top":0.17278531,"width":0.030917553,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"bounds":{"left":0.08976064,"top":0.21428572,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"bounds":{"left":0.08976064,"top":0.21628092,"width":0.04105718,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.","depth":27,"bounds":{"left":0.0787899,"top":0.21747805,"width":0.23088431,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As for setting up languages for transcription,","depth":27,"bounds":{"left":0.0787899,"top":0.28850758,"width":0.10920878,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes, you can configure it","depth":27,"bounds":{"left":0.18799867,"top":0.28850758,"width":0.06333112,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-6934139939829514890
|
8487585695045151701
|
visual_change
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38779
|
1439
|
62
|
2026-05-14T06:28:45.562828+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740125562_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.06304868,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"bounds":{"left":0.013297873,"top":0.09577015,"width":0.029587766,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"bounds":{"left":0.013297873,"top":0.12849163,"width":0.036901597,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.16121309,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.05651596,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.013297873,"top":0.19393456,"width":0.040724736,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.013297873,"top":0.22665602,"width":0.03756649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"bounds":{"left":0.013297873,"top":0.25937748,"width":0.012134309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"bounds":{"left":0.013297873,"top":0.29209897,"width":0.1100399,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"bounds":{"left":0.013297873,"top":0.32482043,"width":0.05668218,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.34796488,"width":0.06333112,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.29321808,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.30518618,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"bounds":{"left":0.3025266,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.07280585,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.08610372,"top":0.10454908,"width":0.028590426,"height":0.030327214},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"bounds":{"left":0.0887633,"top":0.10973663,"width":0.021941489,"height":0.020351157},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.2613032,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"bounds":{"left":0.27460107,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.28789893,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.068484046,"top":0.14764565,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.068484046,"top":0.15003991,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-8266669519108569383
|
8631489596565941143
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4...
|
38777
|
NULL
|
NULL
|
NULL
|
|
38778
|
1437
|
51
|
2026-05-14T06:28:45.589388+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740125589_m1.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
5746865688991257785
|
8492090265334066135
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response...
|
38776
|
NULL
|
NULL
|
NULL
|
|
38780
|
1437
|
52
|
2026-05-14T06:28:46.746781+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740126746_m1.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Mute tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-5422602822111061608
|
8487586803145649109
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38781
|
1439
|
63
|
2026-05-14T06:28:46.794829+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740126794_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.06304868,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"bounds":{"left":0.013297873,"top":0.09577015,"width":0.029587766,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"bounds":{"left":0.013297873,"top":0.12849163,"width":0.036901597,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Mute tab","depth":5,"bounds":{"left":0.011469414,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.020113032,"top":0.16121309,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.05651596,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.013297873,"top":0.19393456,"width":0.040724736,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.013297873,"top":0.22665602,"width":0.03756649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"bounds":{"left":0.013297873,"top":0.25937748,"width":0.012134309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"bounds":{"left":0.013297873,"top":0.29209897,"width":0.1100399,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"bounds":{"left":0.013297873,"top":0.32482043,"width":0.05668218,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.34796488,"width":0.06333112,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.29321808,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.30518618,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"bounds":{"left":0.3025266,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.07280585,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.08610372,"top":0.10454908,"width":0.028590426,"height":0.030327214},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"bounds":{"left":0.0887633,"top":0.10973663,"width":0.021941489,"height":0.020351157},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.2613032,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"bounds":{"left":0.27460107,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.28789893,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.068484046,"top":0.14764565,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.068484046,"top":0.15003991,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"}]...
|
6189522351673888812
|
9133637658563218327
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38782
|
1437
|
53
|
2026-05-14T06:28:47.678727+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740127678_m1.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Mute tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-2710080693951104241
|
9207950350949731223
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/...
|
38780
|
NULL
|
NULL
|
NULL
|
|
38783
|
1439
|
64
|
2026-05-14T06:28:47.703905+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740127703_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.06304868,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"bounds":{"left":0.013297873,"top":0.09577015,"width":0.029587766,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"bounds":{"left":0.013297873,"top":0.12849163,"width":0.036901597,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Mute tab","depth":5,"bounds":{"left":0.011469414,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.020113032,"top":0.16121309,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.05651596,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.013297873,"top":0.19393456,"width":0.040724736,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.013297873,"top":0.22665602,"width":0.03756649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"bounds":{"left":0.013297873,"top":0.25937748,"width":0.012134309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"bounds":{"left":0.013297873,"top":0.29209897,"width":0.1100399,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"bounds":{"left":0.013297873,"top":0.32482043,"width":0.05668218,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.34796488,"width":0.06333112,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.29321808,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.30518618,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"bounds":{"left":0.3025266,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.07280585,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.08610372,"top":0.10454908,"width":0.028590426,"height":0.030327214},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"bounds":{"left":0.0887633,"top":0.10973663,"width":0.021941489,"height":0.020351157},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.2613032,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"bounds":{"left":0.27460107,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.28789893,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.068484046,"top":0.14764565,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.068484046,"top":0.15003991,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-3832886905564474870
|
9138281033672869774
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage....
|
38781
|
NULL
|
NULL
|
NULL
|
|
38784
|
1437
|
54
|
2026-05-14T06:28:48.864387+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740128864_m1.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Mute tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8133723359928901853
|
8636063685129415645
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38785
|
1439
|
65
|
2026-05-14T06:28:48.866705+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740128866_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.06304868,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"bounds":{"left":0.013297873,"top":0.09577015,"width":0.029587766,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"bounds":{"left":0.013297873,"top":0.12849163,"width":0.036901597,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Mute tab","depth":5,"bounds":{"left":0.011469414,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.020113032,"top":0.16121309,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.05651596,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.013297873,"top":0.19393456,"width":0.040724736,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.013297873,"top":0.22665602,"width":0.03756649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"bounds":{"left":0.013297873,"top":0.25937748,"width":0.012134309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"bounds":{"left":0.013297873,"top":0.29209897,"width":0.1100399,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"bounds":{"left":0.013297873,"top":0.32482043,"width":0.05668218,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.34796488,"width":0.06333112,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.29321808,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.30518618,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"bounds":{"left":0.3025266,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.07280585,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.08610372,"top":0.10454908,"width":0.028590426,"height":0.030327214},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"bounds":{"left":0.0887633,"top":0.10973663,"width":0.021941489,"height":0.020351157},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.2613032,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"bounds":{"left":0.27460107,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.28789893,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.068484046,"top":0.14764565,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.068484046,"top":0.15003991,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-7591221691261597889
|
8631489596565941143
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38787
|
1439
|
66
|
2026-05-14T06:28:49.626827+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740129626_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.06304868,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"bounds":{"left":0.013297873,"top":0.09577015,"width":0.029587766,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"bounds":{"left":0.013297873,"top":0.12849163,"width":0.036901597,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Mute tab","depth":5,"bounds":{"left":0.011469414,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.020113032,"top":0.16121309,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.05651596,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.013297873,"top":0.19393456,"width":0.040724736,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.013297873,"top":0.22665602,"width":0.03756649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"bounds":{"left":0.013297873,"top":0.25937748,"width":0.012134309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"bounds":{"left":0.013297873,"top":0.29209897,"width":0.1100399,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"bounds":{"left":0.013297873,"top":0.32482043,"width":0.05668218,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.34796488,"width":0.06333112,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.29321808,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.30518618,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"bounds":{"left":0.3025266,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.07280585,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.08610372,"top":0.10454908,"width":0.028590426,"height":0.030327214},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"bounds":{"left":0.0887633,"top":0.10973663,"width":0.021941489,"height":0.020351157},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.2613032,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"bounds":{"left":0.27460107,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.28789893,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.068484046,"top":0.14764565,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.068484046,"top":0.15003991,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-7813393123186671662
|
9133637658563201943
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen...
|
38785
|
NULL
|
NULL
|
NULL
|
|
38786
|
1437
|
55
|
2026-05-14T06:28:49.661397+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740129661_m1.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Mute tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said yes I will do that. Is there a way to setup languages to transcription?","depth":21,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes I will do that. Is there a way to setup languages to transcription?","depth":23,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8326705383425984011
|
8487585703635086293
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking...
|
38784
|
NULL
|
NULL
|
NULL
|
|
38789
|
1439
|
67
|
2026-05-14T06:28:52.679900+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740132679_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.06304868,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"bounds":{"left":0.013297873,"top":0.09577015,"width":0.029587766,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"bounds":{"left":0.013297873,"top":0.12849163,"width":0.036901597,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Mute tab","depth":5,"bounds":{"left":0.011469414,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.020113032,"top":0.16121309,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.05651596,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.013297873,"top":0.19393456,"width":0.040724736,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.013297873,"top":0.22665602,"width":0.03756649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"bounds":{"left":0.013297873,"top":0.25937748,"width":0.012134309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"bounds":{"left":0.013297873,"top":0.29209897,"width":0.1100399,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"bounds":{"left":0.013297873,"top":0.32482043,"width":0.05668218,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.34796488,"width":0.06333112,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.29321808,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.30518618,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"bounds":{"left":0.3025266,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.07280585,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.08610372,"top":0.10454908,"width":0.028590426,"height":0.030327214},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"bounds":{"left":0.0887633,"top":0.10973663,"width":0.021941489,"height":0.020351157},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.2613032,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"bounds":{"left":0.27460107,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.28789893,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.068484046,"top":0.14764565,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.068484046,"top":0.15003991,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-6150198598900552887
|
8635993256255711959
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38788
|
1437
|
56
|
2026-05-14T06:28:52.723412+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740132723_m1.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Mute tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-5422602822111061608
|
8487586803145649109
|
click
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
38790
|
1439
|
68
|
2026-05-14T06:28:54.255309+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778740134255_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.06304868,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All docs · AFFiNE","depth":5,"bounds":{"left":0.013297873,"top":0.09577015,"width":0.029587766,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DXP4800PLUS-B5F8","depth":5,"bounds":{"left":0.013297873,"top":0.12849163,"width":0.036901597,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Mute tab","depth":5,"bounds":{"left":0.011469414,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.020113032,"top":0.16121309,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.05651596,"top":0.15722266,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.013297873,"top":0.19393456,"width":0.040724736,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.013297873,"top":0.22665602,"width":0.03756649,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude","depth":5,"bounds":{"left":0.013297873,"top":0.25937748,"width":0.012134309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage extra usage for paid Claude plans | Claude Help Center","depth":5,"bounds":{"left":0.013297873,"top":0.29209897,"width":0.1100399,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"2 TB in 25 MB/s - Google Search","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.06881649,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 TB in 25 MB/s - Google Search","depth":5,"bounds":{"left":0.013297873,"top":0.32482043,"width":0.05668218,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.34796488,"width":0.06333112,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.29321808,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.30518618,"top":0.055067837,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"bounds":{"left":0.3025266,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.07280585,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.08610372,"top":0.10454908,"width":0.028590426,"height":0.030327214},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini","depth":15,"bounds":{"left":0.0887633,"top":0.10973663,"width":0.021941489,"height":0.020351157},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New chat","depth":12,"bounds":{"left":0.2613032,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"bounds":{"left":0.27460107,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.28789893,"top":0.103751,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.068484046,"top":0.14764565,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.068484046,"top":0.15003991,"width":0.1200133,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe is fundamentally designed to be a","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100% local, privacy-first","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":27,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. Where It Starts: The Capture Layer","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Where It Starts: The Capture Layer","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Audio:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Microphone Input:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Everything you say into your mic.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. How It Gets Transferred and Transcribed","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. How It Gets Transferred and Transcribed","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe prioritizes local processing, the \"transfer\" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is the transcription pipeline:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Engine:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The raw audio chunks are fed into a local speech-to-text model.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OpenAI Whisper","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Diarization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As it transcribes the text, the engine also performs \"diarization\"—a technical term for speaker identification.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View source details. Opens side panel.","depth":29,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Storage:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The final transcribed text is then indexed into a local","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SQLite database","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The \"Work in Progress\" (WIP) Stage","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The \"Work in Progress\" (WIP) Stage","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"There is a slight bottleneck between","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hearing","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the audio and","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"saving","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the text, which acts as the WIP stage:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Buffering:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Processing Queue:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finalization:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. Understanding the Folder Structure","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4. Understanding the Folder Structure","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The SQLite Database (","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is \"done.\"","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folders:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Temp Files:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you see rapidly changing files, temporary","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"chunks, or locked database journals (like","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sources","depth":26,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sources","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"on_screen":false,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":21,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?","depth":23,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"on_screen":false,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":24,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, those","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is exactly what those files are doing sitting in your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"directory and how they interact with the rest of the system.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. The \"Time Machine\" Playback","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. The \"Time Machine\" Playback","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database along with","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"precise timestamps and file path references","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Re-processing and Model Upgrades","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Re-processing and Model Upgrades","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. The Source of Truth for Hallucinations","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3. The Source of Truth for Hallucinations","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"file is your fallback source of truth to verify what was actually said.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Database Views Them","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Database Views Them","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you were to open up your","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.sqlite","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and query the tables (e.g.,","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audio_transcriptions","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), you would see that the database treats the","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"~/.screenpipe/data/","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"soundcore AeroClip (input)_2026-05-12_07-40-48.mp4","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What happens if you delete them?","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you manually","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"rm","depth":28,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a \"file not found\" error in the background logs.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Managing the Storage Footprint","depth":26,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Managing the Storage Footprint","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Because ScreenPipe records continuously, this folder will inevitably grow over time.","depth":27,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Built-in Garbage Collection:","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).","depth":29,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Archiving:","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.02642952,"height":0.016360734},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you prefer to keep a permanent, searchable \"life log\" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.22041224,"height":0.057861134},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"older","depth":29,"bounds":{"left":0.18035239,"top":0.0,"width":0.015292553,"height":0.016360734},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.","depth":29,"bounds":{"left":0.09142287,"top":0.0,"width":0.22174202,"height":0.057861134},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"bounds":{"left":0.075465426,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"bounds":{"left":0.08610372,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"bounds":{"left":0.09674202,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"bounds":{"left":0.107380316,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"bounds":{"left":0.11801862,"top":0.029928172,"width":0.010638298,"height":0.025538707},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"bounds":{"left":0.12566489,"top":0.0905826,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"bounds":{"left":0.14029256,"top":0.0905826,"width":0.013297873,"height":0.031923383},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said yes I will do that. Is there a way to setup languages to transcription?","depth":21,"bounds":{"left":0.16023937,"top":0.100159615,"width":0.15026596,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"bounds":{"left":0.068484046,"top":0.1009577,"width":0.019946808,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes I will do that. Is there a way to setup languages to transcription?","depth":23,"bounds":{"left":0.16023937,"top":0.10175578,"width":0.12849069,"height":0.035514764},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"bounds":{"left":0.3025266,"top":0.17039107,"width":0.013297873,"height":0.031923383},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":28,"bounds":{"left":0.09208777,"top":0.17278531,"width":0.030917553,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"bounds":{"left":0.08976064,"top":0.21428572,"width":0.0003324468,"height":0.0007980846},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"bounds":{"left":0.08976064,"top":0.21628092,"width":0.04105718,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.","depth":27,"bounds":{"left":0.0787899,"top":0.21747805,"width":0.23088431,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"As for setting up languages for transcription,","depth":27,"bounds":{"left":0.0787899,"top":0.28850758,"width":0.10920878,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"yes, you can configure it","depth":27,"bounds":{"left":0.18799867,"top":0.28850758,"width":0.06333112,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", but it helps to understand how ScreenPipe handles language natively first.","depth":27,"bounds":{"left":0.0787899,"top":0.28850758,"width":0.20994017,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How the Transcription Engine Handles Language","depth":26,"bounds":{"left":0.0787899,"top":0.3499601,"width":0.234375,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How the Transcription Engine Handles Language","depth":27,"bounds":{"left":0.0787899,"top":0.35155627,"width":0.12549867,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By default, ScreenPipe uses a","depth":27,"bounds":{"left":0.0787899,"top":0.37789306,"width":0.072972074,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"multilingual Whisper model","depth":27,"bounds":{"left":0.15176196,"top":0.37789306,"width":0.07047872,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and sets the language configuration to","depth":27,"bounds":{"left":0.0787899,"top":0.37789306,"width":0.23321144,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-Detect","depth":27,"bounds":{"left":0.08510638,"top":0.39864326,"width":0.032247342,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":27,"bounds":{"left":0.11735372,"top":0.39864326,"width":0.0013297872,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.","depth":27,"bounds":{"left":0.0787899,"top":0.42817238,"width":0.23038563,"height":0.037110932},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Advantage:","depth":29,"bounds":{"left":0.09142287,"top":0.47845173,"width":0.040724736,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.","depth":29,"bounds":{"left":0.09142287,"top":0.47845173,"width":0.22174202,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Drawback:","depth":29,"bounds":{"left":0.09142287,"top":0.5494813,"width":0.038896278,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.","depth":29,"bounds":{"left":0.09142287,"top":0.5494813,"width":0.20744681,"height":0.09936153},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"How to Force a Specific Language","depth":26,"bounds":{"left":0.0787899,"top":0.67318434,"width":0.234375,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How to Force a Specific Language","depth":27,"bounds":{"left":0.0787899,"top":0.67478055,"width":0.08759973,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.","depth":27,"bounds":{"left":0.0787899,"top":0.70111734,"width":0.2278923,"height":0.057861134},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you are using the Desktop App UI:","depth":27,"bounds":{"left":0.0787899,"top":0.7721468,"width":0.09275266,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open the ScreenPipe settings.","depth":29,"bounds":{"left":0.09142287,"top":0.801676,"width":0.07347074,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Navigate to the","depth":29,"bounds":{"left":0.09142287,"top":0.8312051,"width":0.038231384,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audio","depth":29,"bounds":{"left":0.12965426,"top":0.8312051,"width":0.014960106,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"bounds":{"left":0.14461437,"top":0.8312051,"width":0.0078125,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI/Transcription","depth":29,"bounds":{"left":0.15242687,"top":0.8312051,"width":0.041888297,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"section.","depth":29,"bounds":{"left":0.19431517,"top":0.8312051,"width":0.02044548,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Look for the","depth":29,"bounds":{"left":0.09142287,"top":0.8607342,"width":0.030585106,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Whisper Language","depth":29,"bounds":{"left":0.12200798,"top":0.8607342,"width":0.04837101,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or","depth":29,"bounds":{"left":0.17037898,"top":0.8607342,"width":0.0078125,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-2880410296425066940
|
8632615550089571285
|
visual_change
|
accessibility
|
NULL
|
Screenpipe — Archive
Screenpipe — Archive
All docs Screenpipe — Archive
Screenpipe — Archive
All docs · AFFiNE
All docs · AFFiNE
DXP4800PLUS-B5F8
DXP4800PLUS-B5F8
Screenpipe — Archive
Mute tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude
Claude
Manage extra usage for paid Claude plans | Claude Help Center
Manage extra usage for paid Claude plans | Claude Help Center
2 TB in 25 MB/s - Google Search
2 TB in 25 MB/s - Google Search
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Gemini
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
You said
Exaplin me: how does the ScreenPipe audio recording work? Where did it start? How is it getting transferred and transcribed? Is there some work in progress stage? How can I see from the folder structure what has been done and what hasn't been done?
Listen
Show thinking
Gemini said
Gemini said
Here is a breakdown of how ScreenPipe handles audio recording, from the moment it captures sound to how it organizes the data on your machine.
ScreenPipe is fundamentally designed to be a
100% local, privacy-first
application, meaning the vast majority of its processing happens directly on your hardware without relying on the cloud.
View source details. Opens side panel.
1. Where It Starts: The Capture Layer
1. Where It Starts: The Capture Layer
The process begins locally by tapping directly into your operating system’s audio routing. ScreenPipe simultaneously captures two separate audio streams:
System Audio:
Everything your computer outputs (e.g., the voices of other people in a Zoom or Teams meeting, a YouTube video, or Spotify).
Microphone Input:
Everything you say into your mic.
View source details. Opens side panel.
Because ScreenPipe acts as a 24/7 background process, it continuously listens to these streams and breaks the continuous audio into manageable chunks to prepare them for the next stage.
2. How It Gets Transferred and Transcribed
2. How It Gets Transferred and Transcribed
Because ScreenPipe prioritizes local processing, the "transfer" step is incredibly short. The audio data never leaves your machine unless you explicitly set up a cloud plugin.
Here is the transcription pipeline:
The Engine:
The raw audio chunks are fed into a local speech-to-text model.
By default, ScreenPipe uses
OpenAI Whisper
running locally on your hardware. (Users can also configure it to use cloud providers like Deepgram if they need faster processing, but local Whisper is the standard).
View source details. Opens side panel.
Diarization:
As it transcribes the text, the engine also performs "diarization"—a technical term for speaker identification.
It analyzes the audio to distinguish between your voice and the voices of others, labeling who said what.
View source details. Opens side panel.
Storage:
The final transcribed text is then indexed into a local
SQLite database
. This database uses Full-Text Search (FTS5), which is what allows you to instantly search for a phrase you heard in a meeting three weeks ago.
3. The "Work in Progress" (WIP) Stage
3. The "Work in Progress" (WIP) Stage
There is a slight bottleneck between
hearing
the audio and
saving
the text, which acts as the WIP stage:
Buffering:
Audio is recorded into a temporary buffer in your system's RAM or written as temporary chunk files on your disk.
Processing Queue:
Whisper requires CPU/GPU resources to transcribe. If you are having a rapid, multi-person conversation, the raw audio chunks line up in a processing queue.
Finalization:
Once the AI finishes transcribing a chunk, the text is committed to the SQLite database alongside a timestamp, and the raw audio is compressed and saved so you can play it back later.
4. Understanding the Folder Structure
4. Understanding the Folder Structure
All of ScreenPipe's data lives locally on your machine (usually in a hidden directory like
~/.screenpipe
on Mac/Linux or in your AppData folder on Windows). You can determine what has been processed by looking at a few key areas in this directory:
The SQLite Database (
):
This is the master ledger. If text exists inside this database, it means the audio has been fully transcribed, diarized, and is "done."
The
or
folders:
This is where the compressed, raw audio files and JPEG screenshots are stored permanently. Think of this as the raw archive.
Temp Files:
If you see rapidly changing files, temporary
chunks, or locked database journals (like
), this indicates the system is actively processing a backlog of audio (the WIP stage). Once the engine catches up, these temporary chunk files are usually cleared out or moved to permanent storage, and the database updates.
Are you setting up ScreenPipe for a specific workflow (like summarizing meetings or tracking your daily tasks), or just exploring how the architecture works under the hood?
Sources
Sources
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
You said I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
You said
I see the files in ~/.screenpipe/data/ as LakyLak bose qc35 II (input)_2026-05-12_06-49-17.mp4 or MacBook Pro Microphone (input)_2026-05-12_12-17-23.mp4 or soundcore AeroClip (input)_2026-05-12_07-40-48.mp4 or System Audio (output)_2026-05-11_06-17-14.mp4. Are these used for anything after transcribing and storing in sqlite db?
Expand
Listen
Show thinking
Gemini said
Gemini said
Yes, those
.mp4
files are absolutely still used after the transcription process is complete. They are not temporary processing chunks; they act as your permanent media archive.
Here is exactly what those files are doing sitting in your
~/.screenpipe/data/
directory and how they interact with the rest of the system.
1. The "Time Machine" Playback
1. The "Time Machine" Playback
The primary reason ScreenPipe keeps these files is for audio playback. When Whisper transcribes your meetings or ambient audio, it writes the text into the
db.sqlite
database along with
precise timestamps and file path references
.
When you search your ScreenPipe history for a specific conversation, the UI doesn't just show you the text—it uses the file path stored in the database to pull up that specific
.mp4
file and starts playing it at the exact second the keyword was spoken. Without these files, you get the transcript, but you lose the ability to actually listen to the context, tone, or nuance of the original conversation.
2. Re-processing and Model Upgrades
2. Re-processing and Model Upgrades
Local LLMs and transcription models are improving rapidly. Right now, your system might be using a quantized Whisper model to balance CPU load with accuracy. If you later decide to run a heavier, more accurate model—or if a radically better speaker diarization algorithm is released—having the raw
.mp4
files allows you to re-process historical audio. Without the raw input files, your data is permanently locked to the quality of the transcription model you were running on May 12th.
3. The Source of Truth for Hallucinations
3. The Source of Truth for Hallucinations
Speech-to-text engines, even great ones, occasionally hallucinate or misinterpret technical jargon, overlapping voices, or background noise. If a database query returns a completely nonsensical sentence, that
.mp4
file is your fallback source of truth to verify what was actually said.
How the Database Views Them
How the Database Views Them
If you were to open up your
db.sqlite
and query the tables (e.g.,
audio_transcriptions
), you would see that the database treats the
~/.screenpipe/data/
folder essentially as a blob storage backend. The tables contain columns acting as soft foreign keys pointing to filenames like
soundcore AeroClip (input)_2026-05-12_07-40-48.mp4
.
What happens if you delete them?
If you manually
rm
those files to free up space on your Mac's SSD, ScreenPipe won't crash. The SQLite database will still hold all your searchable text. However, any attempt to play back the audio for those older transcripts will silently fail or throw a "file not found" error in the background logs.
Managing the Storage Footprint
Managing the Storage Footprint
Because ScreenPipe records continuously, this folder will inevitably grow over time.
Built-in Garbage Collection:
ScreenPipe usually handles this automatically based on retention settings (e.g., deleting media older than 30 days or when the folder hits a specific GB limit).
Archiving:
If you prefer to keep a permanent, searchable "life log" without eating up your local SSD space, you don't necessarily have to let ScreenPipe delete them. You could script a simple cron job to regularly
older
files to your massive 4-drive RAID 5 array, replacing the local files with symlinks. This would keep the database references intact while offloading the heavy media storage to your NAS.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said yes I will do that. Is there a way to setup languages to transcription?
You said
yes I will do that. Is there a way to setup languages to transcription?
Listen
Show thinking
Gemini said
Gemini said
That is a solid plan. Offloading those older media files to your 4-drive RAID 5 setup (or even the secondary SSD-only Beelink NAS if you end up building it) will keep your local SSD lean while keeping your database searchable.
As for setting up languages for transcription,
yes, you can configure it
, but it helps to understand how ScreenPipe handles language natively first.
How the Transcription Engine Handles Language
How the Transcription Engine Handles Language
By default, ScreenPipe uses a
multilingual Whisper model
and sets the language configuration to
Auto-Detect
.
When a new audio chunk comes in, the model listens to the first few seconds of audio, guesses the language, and transcribes the rest of that chunk using that assumption.
The Advantage:
If you are watching a tutorial in English, and then an hour later you are in a Zoom call speaking Bulgarian, ScreenPipe will automatically switch gears without you having to touch the settings.
The Drawback:
Auto-detect can sometimes guess wrong, especially if there is heavy background noise, if someone starts a sentence with a foreign loanword, or if you are rapidly code-switching between Slovak and English in the same conversation. When it guesses wrong, it might try to force Slovak words into English spelling, resulting in gibberish.
How to Force a Specific Language
How to Force a Specific Language
If you want to ensure maximum accuracy and you know you will primarily be recording in one language for a specific period, you can explicitly set the language. This also slightly speeds up the processing because the model skips the detection phase.
If you are using the Desktop App UI:
Open the ScreenPipe settings.
Navigate to the
Audio
or
AI/Transcription
section.
Look for the
Whisper Language
or...
|
38789
|
NULL
|
NULL
|
NULL
|