dsh-video-sherlock
A local-first, evidence-backed video investigation app for DeepDeck.
- Stars
- 0
- Language
- Python
- Created
- Aug 26, 2026
- Updated
- Aug 26, 2026
Introduction
DeepDeck Video Sherlock
A dsh-plugin Cordis Host/Client bundle for local-first, evidence-backed video
investigations in DeepSeek Harness.
Best used with DeepDeck. DeepDeck supplies the Apps launcher, standalone app window, app-scoped Workspace and canonical AI conversations used to run the injected analysis skills. This plugin expects DeepDeck's App runtime service when it is mounted.
Screenshots
Captured from the standalone DeepDeck desktop App using a real completed investigation: a 44-minute interview with 558 transcript segments, 12 narrative sections and 15 inspected frames.
Case overview

Synchronized highlight analysis
Selecting a highlight seeks the source video, updates the current narrative and surfaces the nearest inspected frame with its timestamp and observation.

Transcript signals and narrative map

Keyframe evidence wall

Limitations and audit report

Localized empty workspace
The empty workspace opens the investigation composer directly. This screenshot shows the English locale; 中文 follows the same layout.

Install with DeepDeck (recommended)
- Open Settings → Apps in DeepDeck.
- Paste
https://github.com/jo32/dsh-video-sherlock.gitinto Install an App plugin. - Choose Inspect source, review the detected package and build command, then choose Confirm install.
- Restart DeepDeck when prompted.
- Open Apps → Video Sherlock from the sidebar.
For local development, build the checkout and install the resulting local bundle into the active DeepDeck web profile:
git clone https://github.com/jo32/dsh-video-sherlock.git
cd dsh-video-sherlock
bun install --frozen-lockfile
bunx tsc --noEmit
bun run build
dsh plugin --profile web add "$PWD"
The last command only mounts the Cordis bundle; run it in a DeepDeck-managed profile so the required App runtime is present.
Usage examples
- Paste a public video URL or local media path, optionally add an investigation focus, then start a complete evidence analysis.
- Open a completed case and drag the video timeline or select an evidence highlight to seek directly to the inspected moment.
- Review transcript-density signals, time-proportional narrative chapters, semantic topics, inspected keyframes and explicit limitations.
- Keep separate localized presentations of the same evidence while preserving the authoritative transcript, timestamps and raw artifacts.
Features
- Local-first video acquisition, transcription and semantic frame indexing
- Injected
analyze-videoandvideo-sherlock-visualizeAgent Skills - Native video playback with HTTP byte-range streaming
- Draggable timeline, chapter navigation and click-to-seek evidence highlights
- Synchronized narrative context and nearest inspected frame
- Transcript-density chart, topic index, evidence wall and limitations ledger
- Full Markdown audit report with preserved raw evidence
- Guarded same-case artifact serving with path-containment checks
- Responsive monochrome interface for standalone DeepDeck windows
- Chinese and English UI that follows DeepDeck's language setting live
Generated investigations stay in the App Workspace under video-analyses/ and
are intentionally excluded from Git. Large source videos, transcripts, indexes
and model outputs remain local unless the user explicitly publishes them.
Internationalization
The App interface follows DeepDeck's active 中文 / English preference when the window opens and updates live when that preference changes. Direct visits to the standalone App URL fall back to the browser's requested language.
UI locale and investigation content language are intentionally separate. The Content language field controls transcription and generated evidence; a UI language switch localizes navigation, controls, status text and accessibility labels without translating or mutating existing reports.
Development
Requires Bun 1.4 or newer.
bun install --frozen-lockfile
bun run check
bun test
bun run build
The Host entry, Client launcher, standalone React App and self-mounting Cordis
bundle are declared in package.json and cordis.patch.yml. Generated lib/
output and node_modules/ are not committed.
License
MIT