Skip to content
cccskills
FreePublished on GitHub

screenpipe-health

Check Screenpipe's process, API, screen capture, and audio transcription status. Inspect logs, storage, resource usage, and processing metrics to identify problems, then report the findings with relevant errors and suggested fixes.

OriginalShow the original description

Check Screenpipe health status, process state, and diagnose common issues

See how to install

Good for

  • Check whether Screenpipe is running
  • Investigate missing screen captures
  • Diagnose missing audio transcriptions
  • Investigate high CPU, memory, or storage usage
  • Check database integrity and locking issues

Files included (1)

  • SKILL.md6.6 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Screenpipe Health Agent

You are a specialized agent for checking Screenpipe's health status and diagnosing issues.

Quick Health Check

1. Check if Screenpipe is Running

# Check for screenpipe processes
pgrep -fl screenpipe

# Check if API is responding
curl -s http://localhost:3030/health | head -100

2. Check Recording Status

# 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

3. Check Disk Usage

# 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

4. Check Recent Logs for Errors

# Last 10 errors from today
grep -i "error" ~/.screenpipe/screenpipe.$(date +%Y-%m-%d).log 2>/dev/null | tail -10

Detailed Diagnostics

Process Information

# 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"

API Endpoints Check

# 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

Audio Pipeline Diagnostics

# 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\"]}')
"

Database Health

# 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

Permissions Check (macOS)

# 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"

Common Issues & Fixes

Issue: Screenpipe not running

# Start CLI
screenpipe

# Or start app
open /Applications/screenpipe.app

Issue: No frames being captured

  1. Check screen recording permission in System Preferences
  2. Check logs for permission errors:
grep -i "permission\|denied\|cg\|capture" ~/.screenpipe/screenpipe.$(date +%Y-%m-%d).log | tail -20

Issue: No audio transcription

  1. Check microphone permission
  2. Check audio pipeline metrics:
# 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.')
"
  1. Check audio device selection:
curl -s http://localhost:3030/audio/list
grep -i "audio\|device\|whisper" ~/.screenpipe/screenpipe.$(date +%Y-%m-%d).log | tail -20

Issue: High CPU/Memory

# 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

Issue: Database locked

# Check for lock
fuser ~/.screenpipe/db.sqlite 2>/dev/null

# Check for multiple processes
pgrep -c screenpipe

Response Format

When reporting health status:

  1. Start with overall status (healthy/unhealthy)
  2. List any issues found
  3. Provide specific error messages if relevant
  4. Suggest fixes for identified issues

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Develop and test Windows-specific Screenpipe changes on a disposable Azure virtual machine. The workflow verifies native behavior, preserves logs and desktop video, and handles branch and pull request delivery when authorized.

  • Test Windows-specific capture and permission behavior
  • Investigate compiler, process, or service issues
  • Preserve desktop video and logs for a pull request
screenpipe/screenpipe22KUpdated Oct 18, 2026

release

FreeSummary

Prepare screenpipe component releases by updating versions and dependency lock files, running required build checks, and triggering GitHub Actions. Verify build results and release artifacts, then hand public app publication over to a person.

  • Preparing a desktop app release
  • Checking whether Rust changes require a CLI release
  • Updating MCP versions and checking publication
screenpipe/screenpipe22KUpdated Oct 18, 2026

Create charts, dashboards, scorecards, and styled summaries as standalone HTML reports for the screenpipe viewer. Keep styles, scripts, and images inside the file so the report renders in a sandbox with no network access.

  • Create a visual report of daily work time
  • Present key metrics in a dashboard
  • Summarize results with charts and scorecards
screenpipe/screenpipe22KUpdated Oct 18, 2026

screenpipe-api

FreeSummary

Search Screenpipe recordings, screen text, audio transcripts, and synced-device history through its local API. Use the evidence to review activity, find meeting details, and inspect saved workflows, including recorded steps that can inform automation.

  • Review activity from a specific day or time range
  • Find recorded meeting remarks and screen text
  • Search work history on another synced device
screenpipe/screenpipe22KUpdated Oct 18, 2026

screenpipe-api

FreeSummary

Use Screenpipe’s local REST API, an interface for programmatic requests, to search screen and meeting history, review app activity and active time, retrieve synced-device records, export recordings, and rerun audio transcription.

  • Reviewing daily app use and active screen time
  • Finding decisions in recorded meetings
  • Searching history from a synced device
screenpipe/screenpipe22KUpdated Oct 18, 2026

Turn a recorded software failure into a draft bug report with timestamps, reproduction steps, expected and actual behavior, and relevant evidence. Separate visible symptoms from possible causes and remove sensitive details from shareable evidence.

  • Drafting a bug report from recorded activity
  • Recovering steps taken before and after a failure
  • Comparing expected behavior with observed results
screenpipe/screenpipe22KUpdated Oct 18, 2026

See all skills by screenpipe

Report a problem with this skill