dejado-bridge
v0.1.0
Published
DejaDo Screenpipe bridge — reads local Screenpipe data, runs pattern detection on-device, syncs summaries to DejaDo. Raw frames/audio/clipboard never leave your machine.
Maintainers
Readme
dejado-bridge
The DejaDo bridge reads your local Screenpipe database, runs pattern detection on-device, and syncs summaries to DejaDo.
Raw frames, audio, and OCR text never leave your machine. Only aggregated observations ("Used iTerm2 12 times for 45 minutes today") are sent. All observations are redacted for obvious secrets (API keys, credit cards, JWTs, password query params) before upload.
Install
# Prereq — Screenpipe running locally
brew install screenpipe && screenpipe
# Install the bridge
npm install -g dejado-bridgeConfigure
- Go to https://dejado.ai/settings/bridge
- Click Create API key, copy the key (shown only once)
- Run:
dejado-bridge login
# Paste the key when promptedUsage
# One-shot sync of everything new
dejado-bridge sync
# Daemon — sync every 5 min
dejado-bridge watch
# Inspect current state
dejado-bridge status
# Remove local config
dejado-bridge logoutCustom Screenpipe path
If Screenpipe's DB isn't at the default (~/.screenpipe/db.sqlite):
dejado-bridge login --db /custom/path/db.sqlite
# or
SCREENPIPE_DB_PATH=/custom/path/db.sqlite dejado-bridge syncSelf-hosted DejaDo
dejado-bridge login --api-url https://dejado.example.com
# or
DEJADO_API_URL=https://dejado.example.com dejado-bridge syncWhat gets synced
The bridge reads three Screenpipe tables (frames, audio_transcriptions, ocr_text) and produces four types of observations:
| Type | When | Example |
|---|---|---|
| app_switch | App used 3+ times in the sync window | "Used Slack 47 times (128 min) today: #ops, #engineering" |
| meeting | 5+ consecutive audio segments <2 min apart | "Meeting 42 min, 3 speakers: 'let's align on the Q2 roadmap…'" |
| screen_capture | 6+ consecutive OCR frames in same app, >3 min | "Spent 18 min reading HubSpot (Pipeline)" |
| clipboard | (reserved — Screenpipe doesn't yet expose clipboard events) | — |
What's redacted
Every text field is passed through the redaction pass before upload:
- Credit card numbers (Luhn-matching 13-19 digit sequences)
- SSNs
- AWS access keys (
AKIA…) - GitHub tokens (
ghp_,gho_,ghs_) - Anthropic keys (
sk-ant-…) - OpenAI keys (
sk-…) - Slack tokens (
xoxb-,xoxp-) - JWTs
- PEM private-key blocks
- Bearer / Basic / Authorization header values
- Password/secret query parameters in URLs
Field lengths are hard-capped (summary ≤ 500, context ≤ 5000, appName ≤ 200, actionUrl ≤ 2000).
Configuration file
Stored at ~/.dejado/config.json with 0600 perms:
{
"apiKey": "dejado_bridge_...",
"apiUrl": "https://dejado.ai",
"screenpipeDbPath": "/Users/you/.screenpipe/db.sqlite",
"redactPatterns": []
}Add extra redaction regex strings (applied globally, replaced with [REDACTED:USER]) via redactPatterns. E.g. to scrub a specific internal project codename:
{ "redactPatterns": ["\\bProjectRedacted\\b"] }Cursor state lives at ~/.dejado/cursor.json — delete to force a full re-sync.
Development
git clone https://github.com/liorwn/dejado
cd dejado/bridge
npm install
npm run build
node dist/cli.js statusLicense
MIT
