mit einem Klick
screenpipe-health
// Check Screenpipe health status, process state, and diagnose common issues
// Check Screenpipe health status, process state, and diagnose common issues
| name | screenpipe-health |
| description | Check Screenpipe health status, process state, and diagnose common issues |
| tools | ["Bash","WebFetch"] |
You are a specialized agent for checking Screenpipe's health status and diagnosing issues.
# Check for screenpipe processes
pgrep -fl screenpipe
# Check if API is responding
curl -s http://localhost:3030/health | head -100
# Get health with recording info
curl -s http://localhost:3030/health | jq '.frame_status, .audio_status' 2>/dev/null || curl -s http://localhost:3030/health
# Screenpipe data directory size
du -sh ~/.screenpipe/
# Database size
ls -lh ~/.screenpipe/db.sqlite* 2>/dev/null
# Video/audio cache
du -sh ~/.screenpipe/data/ 2>/dev/null
# Last 10 errors from today
grep -i "error" ~/.screenpipe/screenpipe.$(date +%Y-%m-%d).log 2>/dev/null | tail -10
# Detailed process info
ps aux | grep -i screenpipe | grep -v grep
# Memory usage
ps aux | grep -i screenpipe | grep -v grep | awk '{sum+=$6} END {print "Total Memory: " sum/1024 " MB"}'
# Check if app or CLI
pgrep -fl "screenpipe-app" && echo "Desktop app running"
pgrep -fl "screenpipe$" && echo "CLI running"
# Health endpoint (includes vision + audio pipeline stats)
curl -s http://localhost:3030/health
# Search endpoint (test query)
curl -s "http://localhost:3030/search?limit=1" | head -50
# List audio devices
curl -s http://localhost:3030/audio/list
# List monitors
curl -s http://localhost:3030/vision/list
# Vision pipeline metrics (raw counters)
curl -s http://localhost:3030/vision/metrics
# Audio pipeline metrics (raw counters)
curl -s http://localhost:3030/audio/metrics
# Quick audio pipeline health — is transcription actually working?
curl -s http://localhost:3030/audio/metrics | python3 -c "
import sys,json
m = json.load(sys.stdin)
total_vad = m['vad_passed'] + m['vad_rejected']
print(f'Uptime: {m[\"uptime_secs\"]/60:.0f} min')
print(f'Chunks sent to engine: {m[\"chunks_sent\"]}')
print(f' Channel full drops: {m[\"chunks_channel_full\"]}')
print(f' Stream timeouts: {m[\"stream_timeouts\"]}')
print(f'VAD passed/rejected: {m[\"vad_passed\"]}/{m[\"vad_rejected\"]} ({m[\"vad_passthrough_rate\"]*100:.0f}% passthrough)')
print(f' Avg speech ratio: {m[\"avg_speech_ratio\"]:.3f}')
print(f'Transcriptions: {m[\"transcriptions_completed\"]} ok, {m[\"transcriptions_empty\"]} empty, {m[\"transcription_errors\"]} errors')
print(f'DB inserted: {m[\"db_inserted\"]} ({m[\"total_words\"]} words, {m[\"words_per_minute\"]:.0f} wpm)')
print()
if m['chunks_channel_full'] > 0: print('⚠️ Channel full — transcription engine too slow, audio being dropped')
if total_vad > 0 and m['vad_passthrough_rate'] < 0.1: print('⚠️ Very low VAD passthrough — may be dropping real speech')
if m['transcription_errors'] > 0: print('⚠️ Transcription errors detected')
if m['chunks_sent'] > 0 and m['db_inserted'] == 0: print('🔴 Chunks sent but nothing stored — pipeline is broken')
if m['chunks_sent'] == 0 and m['uptime_secs'] > 120: print('🔴 No chunks sent after 2min — audio capture not working')
"
# Audio pipeline info from /health (summary view)
curl -s http://localhost:3030/health | python3 -c "
import sys,json
h = json.load(sys.stdin)
print(f'Audio status: {h[\"audio_status\"]}')
if 'audio_pipeline' in h and h['audio_pipeline']:
p = h['audio_pipeline']
print(f' VAD passthrough: {p[\"vad_passthrough_rate\"]*100:.0f}%')
print(f' Words/min: {p[\"words_per_minute\"]:.0f}')
print(f' DB inserted: {p[\"db_inserted\"]}')
"
# Check database integrity
sqlite3 ~/.screenpipe/db.sqlite "PRAGMA integrity_check;" 2>/dev/null
# Database size and tables
sqlite3 ~/.screenpipe/db.sqlite "SELECT name, (SELECT COUNT(*) FROM main WHERE name=t.name) FROM sqlite_master t WHERE type='table';" 2>/dev/null
# Recent frame count
sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) as frames_today FROM frames WHERE timestamp > datetime('now', '-1 day');" 2>/dev/null
# Check screen recording permission
sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "SELECT client,allowed FROM access WHERE service='kTCCServiceScreenCapture';" 2>/dev/null | grep -i screenpipe
# Check microphone permission
sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "SELECT client,allowed FROM access WHERE service='kTCCServiceMicrophone';" 2>/dev/null | grep -i screenpipe
# Or use tccutil (if available)
echo "Check System Preferences > Privacy & Security > Screen Recording and Microphone for screenpipe permissions"
# Start CLI
screenpipe
# Or start app
open /Applications/screenpipe.app
grep -i "permission\|denied\|cg\|capture" ~/.screenpipe/screenpipe.$(date +%Y-%m-%d).log | tail -20
# Is audio being captured at all?
curl -s http://localhost:3030/audio/metrics | python3 -c "
import sys,json; m=json.load(sys.stdin)
print(f'chunks_sent={m[\"chunks_sent\"]}, vad_passed={m[\"vad_passed\"]}, vad_rejected={m[\"vad_rejected\"]}, db_inserted={m[\"db_inserted\"]}')
if m['chunks_sent']==0: print('→ No audio reaching engine. Check device/permissions.')
elif m['vad_passed']==0: print('→ VAD rejecting everything. Check mic input level or lower vad_sensitivity.')
elif m['db_inserted']==0: print('→ Transcription failing. Check engine config or logs.')
"
curl -s http://localhost:3030/audio/list
grep -i "audio\|device\|whisper" ~/.screenpipe/screenpipe.$(date +%Y-%m-%d).log | tail -20
# Check current usage
top -l 1 -s 0 | grep -i screenpipe
# Check for memory leaks in logs
grep -i "memory\|oom" ~/.screenpipe/screenpipe.$(date +%Y-%m-%d).log
# Check for lock
fuser ~/.screenpipe/db.sqlite 2>/dev/null
# Check for multiple processes
pgrep -c screenpipe
When reporting health status:
Query the user's data via the local screenpipe REST API at localhost:3030 — screen recordings, audio, UI elements, usage analytics, and the user's persistent memory store. Use when the user asks about their screen activity, meetings, apps, productivity, media export, retranscription, connected services, OR when they ask to save / remember / store / note information so it can be retrieved later (POST /memories — survives across sessions and is queryable by Claude/external agents via the same API).
Query the org's screenpipe telemetry as an enterprise admin — devices, members, recent activity, and substring search across the team's screen recordings and audio transcripts. Use when the user asks about their team, a teammate's activity, what their organization worked on, app usage across the org, or anything that requires seeing data beyond the user's own machine. The skill is only installed for enterprise admins; ordinary users won't see it.
Release the screenpipe monorepo. Bumps versions, triggers GitHub Actions for app, CLI, MCP, and JS packages.
Manage screenpipe pipes (scheduled AI automations) and connections (Telegram, Slack, Discord, etc.) via the CLI. Use when the user asks to create, list, enable, disable, run, or debug pipes, or manage service connections from the command line.
Retrieve and analyze Screenpipe CLI backend logs and desktop app logs for debugging