|
40768
|
2026-04-16T06:36:49.565358+00:00
|
953ffef1-5bd0-402d-b591-728d43b1e00a
|
1132538
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
<?php
declare(strict_types=1);
namespace Jimi <?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\CrmObjects\Validators;
use Exception;
use Carbon\CarbonImmutable;
use Illuminate\Contracts\Events\Dispatcher;
use Jiminny\Contracts\Crm\SyncableCrmObjectInterface;
use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface;
use Jiminny\Events\Crm\RemoteCrmRecordDeleted;
use Jiminny\Exceptions\HttpNotFoundException;
use Jiminny\Models\Account;
use Jiminny\Models\Contact;
use Jiminny\Models\Lead;
use Jiminny\Models\Opportunity;
use Psr\Log\LoggerInterface;
/**
* Validate if a CRM record is stale.
*
* If a record hasn't been updated recently, we should test against the real CRM
* to validate if this record still exists, or was deleted / purged.
*/
class StaleRecordValidator
{
/**
* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale
*/
private const int STALE_THRESHOLD_DAYS = 120;
public function __construct(
private readonly LoggerInterface ......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
40774
|
2026-04-16T06:36:53.786572+00:00
|
953ffef1-5bd0-402d-b591-728d43b1e00a
|
1136759
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
<?php
declare(strict_types=1);
namespace Jimi <?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\CrmObjects\Validators;
use Exception;
use Carbon\CarbonImmutable;
use Illuminate\Contracts\Events\Dispatcher;
use Jiminny\Contracts\Crm\SyncableCrmObjectInterface;
use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface;
use Jiminny\Events\Crm\RemoteCrmRecordDeleted;
use Jiminny\Exceptions\HttpNotFoundException;
use Jiminny\Models\Account;
use Jiminny\Models\Contact;
use Jiminny\Models\Lead;
use Jiminny\Models\Opportunity;
use Psr\Log\LoggerInterface;
/**
* Validate if a CRM record is stale.
*
* If a record hasn't been updated recently, we should test against the real CRM
* to validate if this record still exists, or was deleted / purged.
*/
class StaleRecordValidator
{
/**
* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale
*/
private const int STALE_THRESHOLD_DAYS = 120;
public function __construct(
private readonly LoggerInterface ......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
40802
|
2026-04-16T06:41:28.331921+00:00
|
953ffef1-5bd0-402d-b591-728d43b1e00a
|
1411309
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
<?php
declare(strict_types=1);
namespace Jimi <?php
declare(strict_types=1);
namespace Jiminny\Services\Crm;
use ChaseConey\LaravelDatadogHelper\Datadog;
use Illuminate\Contracts\Cache\Repository;
use Illuminate\Support\Facades\App;
use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface;
use Jiminny\Events\Crm\ProspectUpdated;
use Jiminny\Models\Account;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\Configuration;
use Jiminny\Models\Crm\Profile;
use Jiminny\Models\Lead;
use Jiminny\Models\Opportunity;
use Jiminny\Models\Stage;
use Jiminny\Repositories\Crm\ContactRoleRepository;
use Jiminny\Repositories\Crm\OpportunityRepository;
use Jiminny\Services\Crm\CrmObjects\Validators\StaleRecordValidator;
use Jiminny\Services\Crm\Salesforce\OpportunityMatcher\MatchBusinessAccount;
use Psr\Log\LoggerInterface;
class ProspectCache
{
public const string PROSPECT_TYPE_EMAIL = 'email';
public const string PROSPECT_TYPE_PHONE = 'phone';
public const string PROSPECT_TYPE_DOMAIN = 'domain';
private const int TTL_S......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
42724
|
2026-04-16T08:12:22.772209+00:00
|
953ffef1-5bd0-402d-b591-728d43b1e00a
|
6865599
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
Vasil Vasilev [11:34 AM]
играх си до сега с JS-a Vasil Vasilev [11:34 AM]
играх си до сега с JS-a na integration-app
[11:34 AM]те не resolve-ват promise
[11:34 AM]поради някаква причина
[11:34 AM]и от там нататъка при нас никога не пристига connection обекта
Lukas Kovalik [11:38 AM]
демек integration app
Vasil Vasilev [11:38 AM]
така изглежда
[11:38 AM]това е единствената разлика
Lukas Kovalik [11:39 AM]
момичета подкарваха на други среди zoho в начало на май
Vasil Vasilev [11:39 AM]
направих при мен локално промени да дъмпя данни на всяка стъпка
Lukas Kovalik [11:39 AM]
и ставаше
[11:39 AM]то ще при всички CMR-и през тях
Vasil Vasilev [11:39 AM]
и въпреки, че е осъществена връзка между zoho и integration app, те просто не ......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
42729
|
2026-04-16T08:12:27.887668+00:00
|
953ffef1-5bd0-402d-b591-728d43b1e00a
|
6870715
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
Vasil Vasilev [11:34 AM]
играх си до сега с JS-a Vasil Vasilev [11:34 AM]
играх си до сега с JS-a na integration-app
[11:34 AM]те не resolve-ват promise
[11:34 AM]поради някаква причина
[11:34 AM]и от там нататъка при нас никога не пристига connection обекта
Lukas Kovalik [11:38 AM]
демек integration app
Vasil Vasilev [11:38 AM]
така изглежда
[11:38 AM]това е единствената разлика
Lukas Kovalik [11:39 AM]
момичета подкарваха на други среди zoho в начало на май
Vasil Vasilev [11:39 AM]
направих при мен локално промени да дъмпя данни на всяка стъпка
Lukas Kovalik [11:39 AM]
и ставаше
[11:39 AM]то ще при всички CMR-и през тях
Vasil Vasilev [11:39 AM]
и въпреки, че е осъществена връзка между zoho и integration app, те просто не ......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
42752
|
2026-04-16T08:14:06.015137+00:00
|
953ffef1-5bd0-402d-b591-728d43b1e00a
|
6968840
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
Vasil Vasilev [11:34 AM]
играх си до сега с JS-a Vasil Vasilev [11:34 AM]
играх си до сега с JS-a na integration-app
[11:34 AM]те не resolve-ват promise
[11:34 AM]поради някаква причина
[11:34 AM]и от там нататъка при нас никога не пристига connection обекта
Lukas Kovalik [11:38 AM]
демек integration app
Vasil Vasilev [11:38 AM]
така изглежда
[11:38 AM]това е единствената разлика
Lukas Kovalik [11:39 AM]
момичета подкарваха на други среди zoho в начало на май
Vasil Vasilev [11:39 AM]
направих при мен локално промени да дъмпя данни на всяка стъпка
Lukas Kovalik [11:39 AM]
и ставаше
[11:39 AM]то ще при всички CMR-и през тях
Vasil Vasilev [11:39 AM]
и въпреки, че е осъществена връзка между zoho и integration app, те просто не ......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
43103
|
2026-04-16T08:29:24.035080+00:00
|
953ffef1-5bd0-402d-b591-728d43b1e00a
|
7886844
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
- chat
Vasil Vasilev [11:34 AM]
- chat
Vasil Vasilev [11:34 AM]
играх си до сега с JS-a na integration-app
[11:34 AM]
те не resolve-ват promise
[11:34 AM]
поради някаква причина
[11:34 AM]
и от там нататъка при нас никога не пристига connection обекта
Lukas Kovalik [11:38 AM]
демек integration app
Vasil Vasilev [11:38 AM]
така изглежда
[11:38 AM]
това е единствената разлика
Lukas Kovalik [11:39 AM]
момичета подкарваха на други среди zoho в начало на май
Vasil Vasilev [11:39 AM]
направих при мен локално промени да дъмпя данни на всяка стъпка
Lukas Kovalik [11:39 AM]
и ставаше
[11:39 AM]
......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
43109
|
2026-04-16T08:29:28.264352+00:00
|
953ffef1-5bd0-402d-b591-728d43b1e00a
|
7891073
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
- chat
Vasil Vasilev [11:34 AM]
- chat
Vasil Vasilev [11:34 AM]
играх си до сега с JS-a na integration-app
[11:34 AM]
те не resolve-ват promise
[11:34 AM]
поради някаква причина
[11:34 AM]
и от там нататъка при нас никога не пристига connection обекта
Lukas Kovalik [11:38 AM]
демек integration app
Vasil Vasilev [11:38 AM]
така изглежда
[11:38 AM]
това е единствената разлика
Lukas Kovalik [11:39 AM]
момичета подкарваха на други среди zoho в начало на май
Vasil Vasilev [11:39 AM]
направих при мен локално промени да дъмпя данни на всяка стъпка
Lukas Kovalik [11:39 AM]
и ставаше
[11:39 AM]
......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
43389
|
2026-04-16T08:50:23.601736+00:00
|
953ffef1-5bd0-402d-b591-728d43b1e00a
|
9146267
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
{"id":"66fe6c913202f3a165e3c14d",& {"id":"66fe6c913202f3a165e3c14d","name":"Zoho CRM","uuid":"e02598b1-2f23-4f88-8fa8-8d9f9d420f89","key":"zohocrm","state":"READY","errors":[],"createdAt":"2024-10-03T10:06:09.911Z","updatedAt":"2025-07-03T06:31:13.107Z","isDeactivated":false,"logoUri":"https://static.integration.app/connectors/zoho-crm/logo.png","connectorId":"64a158e7d2605720d232e07b","connectorVersion":"2.2.0","oAuthCallbackUri":"https://api.integration.app/oauth-callback","hasMissingParameters":false,"hasDocumentation":false,"hasOperations":true,"operationsCount":569,"hasData":true,"dataCollectionsCount":20,"hasEvents":false,"eventsCount":0,"hasGlobalWebhooks":false,"hasUdm":true,"authType":"oauth2","connection":{"id":"69047b425ea0b43e53f7f50b","name":"Zoho CRM","userId":"d807eac1-324f-4468-8626-48bfa2e6010f","tenantId":"68512e9890d94a199bab14a9","isTest":false,"connected":true,"state":"READY","errors":[],"integrationId":"66fe6c913202f3a165e3c14d","externalAppId":"6671653e7e2d642e4e41b0fa","authOptionKey":"","crea......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
43480
|
2026-04-16T09:01:17.575507+00:00
|
953ffef1-5bd0-402d-b591-728d43b1e00a
|
9800221
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
{"id":"66fe6c913202f3a165e3c14d",& {"id":"66fe6c913202f3a165e3c14d","name":"Zoho CRM","uuid":"e02598b1-2f23-4f88-8fa8-8d9f9d420f89","key":"zohocrm","state":"READY","errors":[],"createdAt":"2024-10-03T10:06:09.911Z","updatedAt":"2025-07-03T06:31:13.107Z","isDeactivated":false,"logoUri":"https://static.integration.app/connectors/zoho-crm/logo.png","connectorId":"64a158e7d2605720d232e07b","connectorVersion":"2.2.0","oAuthCallbackUri":"https://api.integration.app/oauth-callback","hasMissingParameters":false,"hasDocumentation":false,"hasOperations":true,"operationsCount":569,"hasData":true,"dataCollectionsCount":20,"hasEvents":false,"eventsCount":0,"hasGlobalWebhooks":false,"hasUdm":true,"authType":"oauth2","connection":{"id":"69047b425ea0b43e53f7f50b","name":"Zoho CRM","userId":"d807eac1-324f-4468-8626-48bfa2e6010f","tenantId":"68512e9890d94a199bab14a9","isTest":false,"connected":true,"state":"READY","errors":[],"integrationId":"66fe6c913202f3a165e3c14d","externalAppId":"6671653e7e2d642e4e41b0fa","authOptionKey":"","crea......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
44030
|
2026-04-16T09:47:43.133735+00:00
|
953ffef1-5bd0-402d-b591-728d43b1e00a
|
12585694
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
{"id":"66fe6c913202f3a165e3c14d",& {"id":"66fe6c913202f3a165e3c14d","name":"Zoho CRM","uuid":"e02598b1-2f23-4f88-8fa8-8d9f9d420f89","key":"zohocrm","state":"READY","errors":[],"createdAt":"2024-10-03T10:06:09.911Z","updatedAt":"2025-07-03T06:31:13.107Z","isDeactivated":false,"logoUri":"https://static.integration.app/connectors/zoho-crm/logo.png","connectorId":"64a158e7d2605720d232e07b","connectorVersion":"2.2.0","oAuthCallbackUri":"https://api.integration.app/oauth-callback","hasMissingParameters":false,"hasDocumentation":false,"hasOperations":true,"operationsCount":569,"hasData":true,"dataCollectionsCount":20,"hasEvents":false,"eventsCount":0,"hasGlobalWebhooks":false,"hasUdm":true,"authType":"oauth2","authOptions":[{"key":"","type":"oauth2","title":"OAuth2","inputSchema":{"type":"object","properties":{"account_type":{"type":"string","enum":["production","developer","sandbox"],"description":"What is the type of your Zoho account you want to connect to?","default":"production"}}},"ui":{"schema":{"type":"object","prop......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
44036
|
2026-04-16T09:47:49.583586+00:00
|
953ffef1-5bd0-402d-b591-728d43b1e00a
|
12592144
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
{"id":"66fe6c913202f3a165e3c14d",& {"id":"66fe6c913202f3a165e3c14d","name":"Zoho CRM","uuid":"e02598b1-2f23-4f88-8fa8-8d9f9d420f89","key":"zohocrm","state":"READY","errors":[],"createdAt":"2024-10-03T10:06:09.911Z","updatedAt":"2025-07-03T06:31:13.107Z","isDeactivated":false,"logoUri":"https://static.integration.app/connectors/zoho-crm/logo.png","connectorId":"64a158e7d2605720d232e07b","connectorVersion":"2.2.0","oAuthCallbackUri":"https://api.integration.app/oauth-callback","hasMissingParameters":false,"hasDocumentation":false,"hasOperations":true,"operationsCount":569,"hasData":true,"dataCollectionsCount":20,"hasEvents":false,"eventsCount":0,"hasGlobalWebhooks":false,"hasUdm":true,"authType":"oauth2","authOptions":[{"key":"","type":"oauth2","title":"OAuth2","inputSchema":{"type":"object","properties":{"account_type":{"type":"string","enum":["production","developer","sandbox"],"description":"What is the type of your Zoho account you want to connect to?","default":"production"}}},"ui":{"schema":{"type":"object","prop......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
45151
|
2026-04-16T10:47:02.669233+00:00
|
953ffef1-5bd0-402d-b591-728d43b1e00a
|
16144991
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
{
"id": "66fe6c913202f3a165e3c14d" {
"id": "66fe6c913202f3a165e3c14d",
"name": "Zoho CRM",
"uuid": "e02598b1-2f23-4f88-8fa8-8d9f9d420f89",
"key": "zohocrm",
"state": "READY",
"errors": [],
"revision": "8d27bda5-8eca-46d9-90bd-70f98efd970d",
"createdAt": "2024-10-03T10:06:09.911Z",
"updatedAt": "2026-04-16T10:24:19.276Z",
"isDeactivated": false,
"logoUri": "https://static.integration.app/connectors/zoho-crm/logo.png",
"connectorId": "64a158e7d2605720d232e07b",
"connectorVersion": "3.0.3",
"oAuthCallbackUri": "https://api.integration.app/oauth-callback",
"hasMissingParameters": false,
"hasDocumentation": false,
"hasOperations": true,
"operationsCount": 569,
"hasData": true,
"dataCollectionsCount": 20,
"hasEvents": false,
"eventsCount": 0,
"hasGlobalWebhooks": false,
"hasUdm": true,
"authType": "client-credentials",
"connection": {
"id": "69e0b983da98fa74f98aebfb",
"name": "Connection to 66fe6c913202f3a165e3c14d for Dev Zoho CRM client",
"userId": "1ece66c8-feb1-4df1-b321-21607daf4623",
......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
45159
|
2026-04-16T10:47:14.324688+00:00
|
953ffef1-5bd0-402d-b591-728d43b1e00a
|
16156646
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
{
"id": "66fe6c913202f3a165e3c14d" {
"id": "66fe6c913202f3a165e3c14d",
"name": "Zoho CRM",
"uuid": "e02598b1-2f23-4f88-8fa8-8d9f9d420f89",
"key": "zohocrm",
"state": "READY",
"errors": [],
"revision": "8d27bda5-8eca-46d9-90bd-70f98efd970d",
"createdAt": "2024-10-03T10:06:09.911Z",
"updatedAt": "2026-04-16T10:24:19.276Z",
"isDeactivated": false,
"logoUri": "https://static.integration.app/connectors/zoho-crm/logo.png",
"connectorId": "64a158e7d2605720d232e07b",
"connectorVersion": "3.0.3",
"oAuthCallbackUri": "https://api.integration.app/oauth-callback",
"hasMissingParameters": false,
"hasDocumentation": false,
"hasOperations": true,
"operationsCount": 569,
"hasData": true,
"dataCollectionsCount": 20,
"hasEvents": false,
"eventsCount": 0,
"hasGlobalWebhooks": false,
"hasUdm": true,
"authType": "client-credentials",
"connection": {
"id": "69e0b983da98fa74f98aebfb",
"name": "Connection to 66fe6c913202f3a165e3c14d for Dev Zoho CRM client",
"userId": "1ece66c8-feb1-4df1-b321-21607daf4623",
......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
46890
|
2026-04-16T13:10:01.174952+00:00
|
9b7c5415-eda0-4db6-9d45-49e7670207bb
|
1226582
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlit lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name, window_name FROM ocr_text WHERE app_name LIKE '%Safari%' OR window_name LIKE '%Boosteroid%' ORDER BY timestamp DESC LIMIT 20;"
Error: in prepare, no such column: timestamp
ari%' OR window_name LIKE '%Boosteroid%' ORDER BY timestamp DESC LIMIT 20;
error here ---^
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite ".schema ocr_text"
CREATE TABLE IF NOT EXISTS "ocr_text" (
frame_id INTEGER NOT NULL,
text TEXT NOT NULL,
text_json TEXT,
app_name TEXT NOT NULL DEFAULT '',
ocr_engine TEXT NOT NULL DEFAULT 'unknown'
, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);
CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);
CREATE INDEX idx_ocr_text_length ON ocr_text (te......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
46894
|
2026-04-16T13:10:03.156213+00:00
|
9b7c5415-eda0-4db6-9d45-49e7670207bb
|
1228563
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlit lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name, window_name FROM ocr_text WHERE app_name LIKE '%Safari%' OR window_name LIKE '%Boosteroid%' ORDER BY timestamp DESC LIMIT 20;"
Error: in prepare, no such column: timestamp
ari%' OR window_name LIKE '%Boosteroid%' ORDER BY timestamp DESC LIMIT 20;
error here ---^
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite ".schema ocr_text"
CREATE TABLE IF NOT EXISTS "ocr_text" (
frame_id INTEGER NOT NULL,
text TEXT NOT NULL,
text_json TEXT,
app_name TEXT NOT NULL DEFAULT '',
ocr_engine TEXT NOT NULL DEFAULT 'unknown'
, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);
CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);
CREATE INDEX idx_ocr_text_length ON ocr_text (te......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
47450
|
2026-04-16T13:27:14.044272+00:00
|
9b7c5415-eda0-4db6-9d45-49e7670207bb
|
2259387
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlit lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name, window_name FROM ocr_text WHERE app_name LIKE '%Safari%' OR window_name LIKE '%Boosteroid%' ORDER BY timestamp DESC LIMIT 20;"
Error: in prepare, no such column: timestamp
ari%' OR window_name LIKE '%Boosteroid%' ORDER BY timestamp DESC LIMIT 20;
error here ---^
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite ".schema ocr_text"
CREATE TABLE IF NOT EXISTS "ocr_text" (
frame_id INTEGER NOT NULL,
text TEXT NOT NULL,
text_json TEXT,
app_name TEXT NOT NULL DEFAULT '',
ocr_engine TEXT NOT NULL DEFAULT 'unknown'
, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);
CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);
CREATE INDEX idx_ocr_text_length ON ocr_text (te......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
47454
|
2026-04-16T13:27:15.343885+00:00
|
9b7c5415-eda0-4db6-9d45-49e7670207bb
|
2260687
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlit lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name, window_name FROM ocr_text WHERE app_name LIKE '%Safari%' OR window_name LIKE '%Boosteroid%' ORDER BY timestamp DESC LIMIT 20;"
Error: in prepare, no such column: timestamp
ari%' OR window_name LIKE '%Boosteroid%' ORDER BY timestamp DESC LIMIT 20;
error here ---^
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite ".schema ocr_text"
CREATE TABLE IF NOT EXISTS "ocr_text" (
frame_id INTEGER NOT NULL,
text TEXT NOT NULL,
text_json TEXT,
app_name TEXT NOT NULL DEFAULT '',
ocr_engine TEXT NOT NULL DEFAULT 'unknown'
, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);
CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);
CREATE INDEX idx_ocr_text_length ON ocr_text (te......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
47947
|
2026-04-16T13:41:03.312951+00:00
|
9b7c5415-eda0-4db6-9d45-49e7670207bb
|
3088684
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlit lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM ocr_text;"
31879
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT name FROM sqlite_master WHERE type='table';" | while read t; do echo -n "$t: "; sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM $t;"; done
_sqlx_migrations: 74
video_chunks: 795
sqlite_sequence: 9
audio_chunks: 90
ocr_text: 31881
tags: 0
vision_tags: 0
audio_tags: 0
speakers: 3
speaker_embeddings: 3
audio_transcriptions: 3
ui_events: 47933
ui_events_fts: 47933
ui_events_fts_data: 446
ui_events_fts_idx: 136
ui_events_fts_docsize: 47933
ui_events_fts_config: 1
pipe_executions: 0
pipe_scheduler_state: 0
frames: 39447
meetings: 2
elements: 2543482
elements_fts: 2543482
elements_fts_data: 12214
elements_fts_idx: 5804
elements_fts_docsize: 2535889
elements_fts_config: 1
audio_transcriptions_fts: 3
audio_transcriptions_fts_data: 5
audio_transcriptions_fts_idx: 3
audio_transcriptions_fts......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
47951
|
2026-04-16T13:41:04.939246+00:00
|
9b7c5415-eda0-4db6-9d45-49e7670207bb
|
3090310
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlit lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM ocr_text;"
31879
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT name FROM sqlite_master WHERE type='table';" | while read t; do echo -n "$t: "; sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM $t;"; done
_sqlx_migrations: 74
video_chunks: 795
sqlite_sequence: 9
audio_chunks: 90
ocr_text: 31881
tags: 0
vision_tags: 0
audio_tags: 0
speakers: 3
speaker_embeddings: 3
audio_transcriptions: 3
ui_events: 47933
ui_events_fts: 47933
ui_events_fts_data: 446
ui_events_fts_idx: 136
ui_events_fts_docsize: 47933
ui_events_fts_config: 1
pipe_executions: 0
pipe_scheduler_state: 0
frames: 39447
meetings: 2
elements: 2543482
elements_fts: 2543482
elements_fts_data: 12214
elements_fts_idx: 5804
elements_fts_docsize: 2535889
elements_fts_config: 1
audio_transcriptions_fts: 3
audio_transcriptions_fts_data: 5
audio_transcriptions_fts_idx: 3
audio_transcriptions_fts......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
48285
|
2026-04-16T13:57:41.003185+00:00
|
9b7c5415-eda0-4db6-9d45-49e7670207bb
|
4086377
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ /Users/lukas/.npm/_npx/10835/lib/node_modules/screenpipe/node_modules/@screenpipe/cli-darwin-arm64/bin/screenpipe record --help
increased file descriptor limit from 256 to 8192 (hard limit: 9223372036854775807)
Start recording screen, audio, and serve the API
Usage: screenpipe record [OPTIONS]
Options:
-d, --audio-chunk-duration <AUDIO_CHUNK_DURATION>
Audio chunk duration in seconds
[default: 30]
-p, --port <PORT>
Port to run the server on
[default: 3030]
--disable-audio
Disable audio recording
-i, --audio-device <AUDIO_DEVICE>
Audio devices to use (can be specified multiple times)
--use-system-default-audio
Follow system default audio devices
--data-dir <DATA_DIR>
Data directory. Default to $HOME/.screenpipe
--debug
Enable debug logging for screenpipe modules
-a, --audio-transcription-engine <AU......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
48289
|
2026-04-16T13:57:43.017733+00:00
|
9b7c5415-eda0-4db6-9d45-49e7670207bb
|
4088391
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ /Users/lukas/.npm/_npx/10835/lib/node_modules/screenpipe/node_modules/@screenpipe/cli-darwin-arm64/bin/screenpipe record --help
increased file descriptor limit from 256 to 8192 (hard limit: 9223372036854775807)
Start recording screen, audio, and serve the API
Usage: screenpipe record [OPTIONS]
Options:
-d, --audio-chunk-duration <AUDIO_CHUNK_DURATION>
Audio chunk duration in seconds
[default: 30]
-p, --port <PORT>
Port to run the server on
[default: 3030]
--disable-audio
Disable audio recording
-i, --audio-device <AUDIO_DEVICE>
Audio devices to use (can be specified multiple times)
--use-system-default-audio
Follow system default audio devices
--data-dir <DATA_DIR>
Data directory. Default to $HOME/.screenpipe
--debug
Enable debug logging for screenpipe modules
-a, --audio-transcription-engine <AU......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50708
|
2026-04-16T15:19:45.240687+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
3478639
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= datetime('now', '-1 hour');"
1722|2026-04-16T07:04:01.107353+00:00|2026-04-16T13:36:06.286533+00:00
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT MIN(timestamp) FROM frames WHERE timestamp >= datetime('now', '-2 hours');"
2026-04-16T06:12:46.590663+00:00
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ps aux | grep screenpipe | grep -v grep
lukas 21754 6.1 3.7 412825680 628320 s009 S+ 5:21pm 11:48.74 /Users/lukas/.npm/_npx/21722/lib/node_modules/screenpipe/node_modules/@screenpipe/cli-darwin-arm64/bin/screenpipe record --disable-audio --ignored-windows Boosteroid
lukas 21722 0.0 0.1 411289504 21712 s009 S+ 5:21pm 0:00.08 node /Users/lukas/.nvm/versions/node/v14.15.4/bin/npx screenpipe@latest......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50710
|
2026-04-16T15:19:45.478237+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
3478876
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= datetime('now', '-1 hour');"
1722|2026-04-16T07:04:01.107353+00:00|2026-04-16T13:36:06.286533+00:00
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT MIN(timestamp) FROM frames WHERE timestamp >= datetime('now', '-2 hours');"
2026-04-16T06:12:46.590663+00:00
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ps aux | grep screenpipe | grep -v grep
lukas 21754 6.1 3.7 412825680 628320 s009 S+ 5:21pm 11:48.74 /Users/lukas/.npm/_npx/21722/lib/node_modules/screenpipe/node_modules/@screenpipe/cli-darwin-arm64/bin/screenpipe record --disable-audio --ignored-windows Boosteroid
lukas 21722 0.0 0.1 411289504 21712 s009 S+ 5:21pm 0:00.08 node /Users/lukas/.nvm/versions/node/v14.15.4/bin/npx screenpipe@latest......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
50714
|
2026-04-16T15:19:48.183203+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
3481581
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= datetime('now', '-1 hour');"
1722|2026-04-16T07:04:01.107353+00:00|2026-04-16T13:36:06.286533+00:00
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT MIN(timestamp) FROM frames WHERE timestamp >= datetime('now', '-2 hours');"
2026-04-16T06:12:46.590663+00:00
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ps aux | grep screenpipe | grep -v grep
lukas 21754 6.1 3.7 412825680 628320 s009 S+ 5:21pm 11:48.74 /Users/lukas/.npm/_npx/21722/lib/node_modules/screenpipe/node_modules/@screenpipe/cli-darwin-arm64/bin/screenpipe record --disable-audio --ignored-windows Boosteroid
lukas 21722 0.0 0.1 411289504 21712 s009 S+ 5:21pm 0:00.08 node /Users/lukas/.nvm/versions/node/v14.15.4/bin/npx screenpipe@latest......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
51014
|
2026-04-16T15:43:12.788681+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
4886186
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name FROM sqlite_master WHERE type='table'
ORDER BY name;" | while read t; do
count=$(sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM $t;")
echo "$t: $count"
done
_sqlx_migrations: 74
audio_chunks: 90
audio_tags: 0
audio_transcriptions: 3
audio_transcriptions_fts: 3
audio_transcriptions_fts_config: 1
audio_transcriptions_fts_data: 5
audio_transcriptions_fts_docsize: 3
audio_transcriptions_fts_idx: 3
elements: 2583644
elements_fts: 2583644
elements_fts_config: 1
elements_fts_data: 12471
elements_fts_docsize: 2575943
elements_fts_idx: 5265
frames: 40262
frames_fts: 40240
frames_fts_config: 1
frames_fts_content: 40240
frames_fts_data: 11680
frames_fts_docsize: 40240
frames_fts_idx: 7447
meetings: 2
memories: 0
memories_fts: 0
memories_fts_config: 1
memories_fts_data: 2
memories_fts_docsize: 0
memories_fts_idx: 0
ocr_text: 32365
pipe_executions: 0
pipe_scheduler_state: 0
secrets: ......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
51016
|
2026-04-16T15:43:12.997706+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
4886395
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name FROM sqlite_master WHERE type='table'
ORDER BY name;" | while read t; do
count=$(sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM $t;")
echo "$t: $count"
done
_sqlx_migrations: 74
audio_chunks: 90
audio_tags: 0
audio_transcriptions: 3
audio_transcriptions_fts: 3
audio_transcriptions_fts_config: 1
audio_transcriptions_fts_data: 5
audio_transcriptions_fts_docsize: 3
audio_transcriptions_fts_idx: 3
elements: 2583644
elements_fts: 2583644
elements_fts_config: 1
elements_fts_data: 12471
elements_fts_docsize: 2575943
elements_fts_idx: 5265
frames: 40262
frames_fts: 40240
frames_fts_config: 1
frames_fts_content: 40240
frames_fts_data: 11680
frames_fts_docsize: 40240
frames_fts_idx: 7447
meetings: 2
memories: 0
memories_fts: 0
memories_fts_config: 1
memories_fts_data: 2
memories_fts_docsize: 0
memories_fts_idx: 0
ocr_text: 32365
pipe_executions: 0
pipe_scheduler_state: 0
secrets: ......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
51024
|
2026-04-16T15:43:26.655170+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
4900053
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name FROM sqlite_master WHERE type='table'
ORDER BY name;" | while read t; do
count=$(sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM $t;")
echo "$t: $count"
done
_sqlx_migrations: 74
audio_chunks: 90
audio_tags: 0
audio_transcriptions: 3
audio_transcriptions_fts: 3
audio_transcriptions_fts_config: 1
audio_transcriptions_fts_data: 5
audio_transcriptions_fts_docsize: 3
audio_transcriptions_fts_idx: 3
elements: 2583644
elements_fts: 2583644
elements_fts_config: 1
elements_fts_data: 12471
elements_fts_docsize: 2575943
elements_fts_idx: 5265
frames: 40262
frames_fts: 40240
frames_fts_config: 1
frames_fts_content: 40240
frames_fts_data: 11680
frames_fts_docsize: 40240
frames_fts_idx: 7447
meetings: 2
memories: 0
memories_fts: 0
memories_fts_config: 1
memories_fts_data: 2
memories_fts_docsize: 0
memories_fts_idx: 0
ocr_text: 32365
pipe_executions: 0
pipe_scheduler_state: 0
secrets: ......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
51092
|
2026-04-16T15:43:41.713448+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
4915111
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name FROM sqlite_master WHERE type='table'
ORDER BY name;" | while read t; do
count=$(sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM $t;")
echo "$t: $count"
done
_sqlx_migrations: 74
audio_chunks: 90
audio_tags: 0
audio_transcriptions: 3
audio_transcriptions_fts: 3
audio_transcriptions_fts_config: 1
audio_transcriptions_fts_data: 5
audio_transcriptions_fts_docsize: 3
audio_transcriptions_fts_idx: 3
elements: 2583644
elements_fts: 2583644
elements_fts_config: 1
elements_fts_data: 12471
elements_fts_docsize: 2575943
elements_fts_idx: 5265
frames: 40262
frames_fts: 40240
frames_fts_config: 1
frames_fts_content: 40240
frames_fts_data: 11680
frames_fts_docsize: 40240
frames_fts_idx: 7447
meetings: 2
memories: 0
memories_fts: 0
memories_fts_config: 1
memories_fts_data: 2
memories_fts_docsize: 0
memories_fts_idx: 0
ocr_text: 32365
pipe_executions: 0
pipe_scheduler_state: 0
secrets: ......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
51250
|
2026-04-16T15:53:46.012170+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
5519409
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema meetings"
CREATE TABLE meetings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
meeting_start TEXT NOT NULL,
meeting_end TEXT,
meeting_app TEXT NOT NULL,
title TEXT,
attendees TEXT,
detection_source TEXT NOT NULL DEFAULT 'app',
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
, note TEXT);
CREATE INDEX idx_meetings_start ON meetings(meeting_start);
CREATE INDEX idx_meetings_end ON meetings(meeting_end);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
1|2026-04-16T07:33:44.830Z|2026-04-16T07:44:33.417Z|Slack|||ui_scan|2026-04-16T07:33:44.830Z|## typed during meeting
ststg
vstg
docker ps
--report-id
--result-id
```
```
2|2026-04-16T10:50:05.968Z|2026-04-16T10:59:54.482Z|Slack|||ui_scan|2026-04-16T10:50:05.968Z|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
51252
|
2026-04-16T15:53:46.224917+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
5519622
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema meetings"
CREATE TABLE meetings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
meeting_start TEXT NOT NULL,
meeting_end TEXT,
meeting_app TEXT NOT NULL,
title TEXT,
attendees TEXT,
detection_source TEXT NOT NULL DEFAULT 'app',
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
, note TEXT);
CREATE INDEX idx_meetings_start ON meetings(meeting_start);
CREATE INDEX idx_meetings_end ON meetings(meeting_end);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
1|2026-04-16T07:33:44.830Z|2026-04-16T07:44:33.417Z|Slack|||ui_scan|2026-04-16T07:33:44.830Z|## typed during meeting
ststg
vstg
docker ps
--report-id
--result-id
```
```
2|2026-04-16T10:50:05.968Z|2026-04-16T10:59:54.482Z|Slack|||ui_scan|2026-04-16T10:50:05.968Z|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
51256
|
2026-04-16T15:53:47.855396+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
5521252
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema meetings"
CREATE TABLE meetings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
meeting_start TEXT NOT NULL,
meeting_end TEXT,
meeting_app TEXT NOT NULL,
title TEXT,
attendees TEXT,
detection_source TEXT NOT NULL DEFAULT 'app',
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
, note TEXT);
CREATE INDEX idx_meetings_start ON meetings(meeting_start);
CREATE INDEX idx_meetings_end ON meetings(meeting_end);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
1|2026-04-16T07:33:44.830Z|2026-04-16T07:44:33.417Z|Slack|||ui_scan|2026-04-16T07:33:44.830Z|## typed during meeting
ststg
vstg
docker ps
--report-id
--result-id
```
```
2|2026-04-16T10:50:05.968Z|2026-04-16T10:59:54.482Z|Slack|||ui_scan|2026-04-16T10:50:05.968Z|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
51303
|
2026-04-16T15:56:47.218492+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
5700615
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT name, tbl_name, sql FROM sqlite_master WHERE type='index' AND sql IS NOT NULL ORDER BY tbl_name;"
idx_audio_chunks_timestamp|audio_chunks|CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp)
idx_audio_tags_audio_chunk_id|audio_tags|CREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id)
idx_audio_tags_tag_id|audio_tags|CREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id)
idx_audio_transcriptions_audio_chunk_id_timestamp|audio_transcriptions|CREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp)
idx_audio_transcriptions_audio_chunk_id|audio_transcriptions|CREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id)
idx_audio_transcriptions_timestamp|audio_transcriptions|CREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp)
idx_audio_tra......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
51305
|
2026-04-16T15:56:47.442024+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
5700839
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT name, tbl_name, sql FROM sqlite_master WHERE type='index' AND sql IS NOT NULL ORDER BY tbl_name;"
idx_audio_chunks_timestamp|audio_chunks|CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp)
idx_audio_tags_audio_chunk_id|audio_tags|CREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id)
idx_audio_tags_tag_id|audio_tags|CREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id)
idx_audio_transcriptions_audio_chunk_id_timestamp|audio_transcriptions|CREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp)
idx_audio_transcriptions_audio_chunk_id|audio_transcriptions|CREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id)
idx_audio_transcriptions_timestamp|audio_transcriptions|CREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp)
idx_audio_tra......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
51310
|
2026-04-16T15:56:48.929277+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
5702326
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT name, tbl_name, sql FROM sqlite_master WHERE type='index' AND sql IS NOT NULL ORDER BY tbl_name;"
idx_audio_chunks_timestamp|audio_chunks|CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp)
idx_audio_tags_audio_chunk_id|audio_tags|CREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id)
idx_audio_tags_tag_id|audio_tags|CREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id)
idx_audio_transcriptions_audio_chunk_id_timestamp|audio_transcriptions|CREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp)
idx_audio_transcriptions_audio_chunk_id|audio_transcriptions|CREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id)
idx_audio_transcriptions_timestamp|audio_transcriptions|CREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp)
idx_audio_tra......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
51582
|
2026-04-16T16:19:42.217135+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
7075619
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
#!/bin/bash
# screenpipe_sync.sh
# Syncs Screenpip #!/bin/bash
# screenpipe_sync.sh
# Syncs Screenpipe SQLite data to a NAS archive database (append-only, no deletions).
#
# Usage:
# ./screenpipe_sync.sh # syncs yesterday (default)
# ./screenpipe_sync.sh 2026-04-15 # syncs a specific date
# ./screenpipe_sync.sh today # syncs today so far
#
# Cron example (runs at 3am daily):
# 0 3 * * * /Users/lukas/scripts/screenpipe_sync.sh >> /Users/lukas/.screenpipe/sync.log 2>&1
set -euo pipefail
# ─── CONFIG ───────────────────────────────────────────────────────────────────
DB_SRC="${SCREENPIPE_DB:-$HOME/.screenpipe/db.sqlite}"
NAS_MOUNT="${NAS_MOUNT:-/Volumes/Test/screenpipe}"
NAS_DB="$NAS_MOUNT/archive.db"
LOG_FILE="$HOME/.screenpipe/sync.log"
# ──────────────────────────────────────────......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
51584
|
2026-04-16T16:19:42.328243+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
7075730
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
#!/bin/bash
# screenpipe_sync.sh
# Syncs Screenpip #!/bin/bash
# screenpipe_sync.sh
# Syncs Screenpipe SQLite data to a NAS archive database (append-only, no deletions).
#
# Usage:
# ./screenpipe_sync.sh # syncs yesterday (default)
# ./screenpipe_sync.sh 2026-04-15 # syncs a specific date
# ./screenpipe_sync.sh today # syncs today so far
#
# Cron example (runs at 3am daily):
# 0 3 * * * /Users/lukas/scripts/screenpipe_sync.sh >> /Users/lukas/.screenpipe/sync.log 2>&1
set -euo pipefail
# ─── CONFIG ───────────────────────────────────────────────────────────────────
DB_SRC="${SCREENPIPE_DB:-$HOME/.screenpipe/db.sqlite}"
NAS_MOUNT="${NAS_MOUNT:-/Volumes/Test/screenpipe}"
NAS_DB="$NAS_MOUNT/archive.db"
LOG_FILE="$HOME/.screenpipe/sync.log"
# ──────────────────────────────────────────......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
51589
|
2026-04-16T16:19:42.881453+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
7076283
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
#!/bin/bash
# screenpipe_sync.sh
# Syncs Screenpip #!/bin/bash
# screenpipe_sync.sh
# Syncs Screenpipe SQLite data to a NAS archive database (append-only, no deletions).
#
# Usage:
# ./screenpipe_sync.sh # syncs yesterday (default)
# ./screenpipe_sync.sh 2026-04-15 # syncs a specific date
# ./screenpipe_sync.sh today # syncs today so far
#
# Cron example (runs at 3am daily):
# 0 3 * * * /Users/lukas/scripts/screenpipe_sync.sh >> /Users/lukas/.screenpipe/sync.log 2>&1
set -euo pipefail
# ─── CONFIG ───────────────────────────────────────────────────────────────────
DB_SRC="${SCREENPIPE_DB:-$HOME/.screenpipe/db.sqlite}"
NAS_MOUNT="${NAS_MOUNT:-/Volumes/Test/screenpipe}"
NAS_DB="$NAS_MOUNT/archive.db"
LOG_FILE="$HOME/.screenpipe/sync.log"
# ──────────────────────────────────────────......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
51678
|
2026-04-16T16:27:51.875105+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
7565276
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
51683
|
2026-04-16T16:27:53.694501+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
7567096
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
51882
|
2026-04-16T16:45:06.893689+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
8600324
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events ......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
51887
|
2026-04-16T16:45:08.801155+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
8602232
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events ......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
51979
|
2026-04-16T16:48:10.205572+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
8783637
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestamp ON frames(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_frames_app_name ON frames(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_window_name ON frames(window_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_video_chunk_id ON frames(video_chunk_id);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames W......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
51984
|
2026-04-16T16:48:12.369924+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
8785801
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestamp ON frames(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_frames_app_name ON frames(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_window_name ON frames(window_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_video_chunk_id ON frames(video_chunk_id);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames W......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
52078
|
2026-04-16T16:51:48.306051+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
9001739
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestamp ON frames(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_frames_app_name ON frames(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_window_name ON frames(window_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_video_chunk_id ON frames(video_chunk_id);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames W......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
52080
|
2026-04-16T16:51:48.485372+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
9001918
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestamp ON frames(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_frames_app_name ON frames(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_window_name ON frames(window_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_video_chunk_id ON frames(video_chunk_id);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames W......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
52085
|
2026-04-16T16:51:50.089335+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
9003522
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screen lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestamp ON frames(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_frames_app_name ON frames(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_window_name ON frames(window_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_video_chunk_id ON frames(video_chunk_id);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames W......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
52242
|
2026-04-16T17:23:47.312759+00:00
|
12814e35-58e9-47de-8b51-d97fb023ee4a
|
10334329
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
echo "Stage 3: syncing remaining tables..." echo "Stage 3: syncing remaining tables..."
echo -n "ui_events... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
INSERT OR IGNORE INTO nas.ui_events SELECT * FROM main.ui_events WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
echo -n "ocr_text... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
INSERT OR IGNORE INTO nas.ocr_text SELECT o.* FROM main.ocr_text o JOIN main.frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
DETACH nas;
EOF
echo -n "video_chunks... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
INSERT OR IGNORE INTO nas.video_chunks SELECT * FROM main.video_chunks WHERE id IN (SELECT DISTINCT video_chunk_id FROM main.frames WHERE date(timestamp) = '$DATE' AND video_chunk_id IS NOT NU......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
53038
|
2026-04-17T06:25:14.783827+00:00
|
a6aa001c-600c-47ef-97db-b500eecbecbe
|
1754027
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
118
|
[
{
"id": 136,
"media_type [
{
"id": 136,
"media_type": "pdf",
"response": {"request_id":"debee4b3-1c28-4112-ad1b-f0dbe67c452c","status":"completed","timestamp":"2025-09-29T01:09:25.039253+00:00","s3_url":"s3:\/\/jiminny.client-data\/5f0f4810-7e77-4086-8f69-93429ae4d70b\/reports\/debee4b3-1c28-4112-ad1b-f0dbe67c452c.MD","report_type":"coaching_profiles","pdf_url":"s3:\/\/jiminny.client-data\/5f0f4810-7e77-4086-8f69-93429ae4d70b\/reports\/debee4b3-1c28-4112-ad1b-f0dbe67c452c.pdf","podcast_url":"s3:\/\/jiminny.client-data\/5f0f4810-7e77-4086-8f69-93429ae4d70b\/reports\/debee4b3-1c28-4112-ad1b-f0dbe67c452c_podcast.json","podcast_audio_url":"s3:\/\/jiminny.client-data\/5f0f4810-7e77-4086-8f69-93429ae4d70b\/reports\/debee4b3-1c28-4112-ad1b-f0dbe67c452c_podcast.mp3","podcast_ssml_url":"s3:\/\/jiminny.client-data\/5f0f4810-7e77-4086-8f69-93429ae4d70b\/reports\/debee4b3-1c28-4112-ad1b-f0dbe67c452c_podcast.ssml"}
},
{
"id": 137,
"media_type": "podcast",
"response": {"request_id":"debee4b3......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
|
55200
|
2026-04-17T08:52:36.341734+00:00
|
a6aa001c-600c-47ef-97db-b500eecbecbe
|
10595155
|
clipboard
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
99
|
[
{
"opportunity_id": 7594349,
& [
{
"opportunity_id": 7594349,
"stage_id": 12098,
"created_at": "2026-03-16 16:53:14",
"updated_at": "2026-03-16 16:53:14"
},
{
"opportunity_id": 7594349,
"stage_id": 16352,
"created_at": "2026-03-17 09:21:10",
"updated_at": "2026-03-17 09:21:10"
},
{
"opportunity_id": 7594349,
"stage_id": 14535,
"created_at": "2026-03-18 12:51:43",
"updated_at": "2026-03-18 12:51:43"
},
{
"opportunity_id": 7594349,
"stage_id": 15223,
"created_at": "2026-03-18 14:52:15",
"updated_at": "2026-03-18 14:52:15"
},
{
"opportunity_id": 7594349,
"stage_id": 16352,
"created_at": "2026-03-19 16:28:26",
"updated_at": "2026-03-19 16:28:26"
},
{
"opportunity_id": 7594349,
"stage_id": 16309,
"created_at": "2026-03-24 15:20:18",
"updated_at": "2026-03-24 15:20:18"
},
{
"opportunity_id": 7594349,
"stage_id": 16352,
"created_at": "2026-03-24 15:51:08",
"updated_at": "2026-03-24 15......
|
1000
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|
NULL
|