About pair-programmer
VideoDB Pair Programmer is a skill for AI pair programming with screen and audio context. It records and indexes visual and audio events in real time, which can be searched or used to act on spoken instructions.
Key features
- 01Record screen and audio
- 02Index visual and audio events in real time
- 03Search recorded context
- 04Summarize recent activity
- 05Act on spoken instructions
Use cases
- 01Review recent on-screen activity during coding
- 02Search recordings for a spoken phrase or screen context
- 03Use a spoken instruction to trigger an action
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ video-db/ pair-programmer --skill pair-programmerAfter installing, type/pair-programmerin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
package.jsonrecorder-app.jssearch-rtstream.jsverify-connection.jscommands/act.mdconfig.mdrecord.mdsearch.mdsetup.mdstop.mdwhat-happened.mdui/picker.htmlwidget.htmlDetails
From the project READMEVideoDB Pair Programmer
AI pair programming with real-time screen and audio context. Record your screen and audio, with AI-powered indexing that logs visual and audio events in real-time.
Commands
When user asks for a command, read the corresponding file for instructions:
| Command | Description | Reference |
|---|---|---|
/pair-programmer record | Start screen/audio recording | See commands/record.md |
/pair-programmer stop | Stop the running recording | See commands/stop.md |
/pair-programmer search | Search recording context (screen, mic, audio) | See commands/search.md |
/pair-programmer act | Act on a spoken instruction from the mic | See commands/act.md |
/pair-programmer what-happened | Summarize recent activity | See commands/what-happened.md |
/pair-programmer setup | Install deps and configure API key | See commands/setup.md |
/pair-programmer config | Change indexing and other settings | See commands/config.md |
How It Works
- User runs
/pair-programmer setupto install dependencies and setVIDEO_DB_API_KEYenvironment variable - User runs
/pair-programmer recordto start recording - A picker UI appears to select screen and audio sources
- Recording starts and events are logged to
/tmp/videodb_pp_events.jsonl - User can stop recording from the tray icon (🔴 PP → Stop Recording)
Output Files
| Path | Content |
|---|---|
/tmp/videodb_pp_pid | Process ID of the recorder |
/tmp/videodb_pp_events.jsonl | All WebSocket events (JSONL format) |
/tmp/videodb_pp_info.json | Current session info (session_id, rtstream_ids) |
Event File Format
Events are written as JSONL (one JSON object per line):
{"ts": "2026-03-05T10:15:30.123Z", "unix_ts": 1709374530.12, "channel": "visual_index", "data": {"text": "User is viewing VS Code with auth.ts open"}}
{"ts": "2026-03-05T10:15:31.456Z", "unix_ts": 1709374531.45, "channel": "transcript", "data": {"text": "Let me check the login flow", "is_final": true}}
Environment Variables
The recorder reads these from environment variables:
| Variable | Required | Description |
|---|---|---|
VIDEO_DB_API_KEY | Yes | VideoDB API key |
VIDEO_DB_BASE_URL | No | API endpoint (default: https://api.videodb.io) |
Reading Context
Events are in /tmp/videodb_pp_events.jsonl. Use CLI tools to filter — never read the whole file.
| Channel | Content | Density |
|---|---|---|
visual_index | Screen descriptions | Dense (~1 every 2s) |
transcript | Mic speech | Sparse (sentences) |
audio_index | System audio summaries | Sparse (sentences) |
Channel filter — use grep to filter by channel, pipe to tail for recent events:
grep '"channel":"visual_index"' /tmp/videodb_pp_events.jsonl | tail -10
Keyword search — grep across all channels:
grep -i 'keyword' /tmp/videodb_pp_events.jsonl
Time-window filter — filter events from the last N minutes:
- Get current epoch:
$(date +%s) - Compute cutoff:
epoch - N*60 - Filter lines where the
unix_tsJSON field exceeds the cutoff - Pipe through
grepto narrow by channel
Generate the appropriate filtering command (grep, awk, python3, jq) based on complexity.
For semantic search across indexed content, use search-rtstream.js:
node search-rtstream.js --query="your query" --cwd=<PROJECT_ROOT>
<PROJECT_ROOT>is the absolute path to the user's project directory. This is NOT the skill directory — resolve it before running the command.
See commands/search.md for the full search strategy and CLI patterns.