Watch Skill: timestamped evidence and non-model verification for agents that watch video
Give AI agents eyes, ears, and verifiable results. Watch Skill turns video, audio and screen activity into searchable, timestamped evidence and proves work with deterministic contracts, not model opinion. DeepWatch is the agent workspace built on DeepSeek Harness. Python + npm, MCP, CLI, REST, Web.
At a glance
- What is it?
- Watch Skill indexes video, audio and screen recordings into timestamped frames, transcripts and OCR text, then checks claims about them against frozen contracts rather than a model's opinion. DeepWatch is the workspace built on DeepSeek Harness that ships it pre-composed.
- Who is it for?
- Adopt Watch Skill if you already run an MCP client and need answers about recordings to cite openable timestamps, or if you need a verification verdict that does not come from the model being checked. Skip it if you only need whole-file transcription or a one-off summary, and skip it if you cannot install the extras, since a bare install stops at perceive.missing_dependency on the first video.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The gap Watch Skill targets: an agent that cannot point at a moment
Most agent tooling treats a video as a blob to be summarized. Ask a question about a recording and you get prose with no anchor, and there is no way to check whether the answer corresponds to anything in the file. Watch Skill takes the opposite position. The README describes the output of perception as frames, transcripts and OCR text, each carrying an absolute timestamp, and states that every answer cites a moment you can open. The intended user is an engineer who already has an agent loop and wants it to reason about recorded material without losing the ability to audit the reasoning. The second capability is separate on purpose. A frozen contract covering file digests, JSON values, SQL results, HTTP responses or DOM state is evaluated by a separate process, and the verdict is one of VERIFIED, FAILED, UNVERIFIED or INCONCLUSIVE. The README is explicit that this verdict does not come from a language model. That split matters because the two halves have different failure modes. Perception can be wrong about what is on screen. Verification can be wrong about whether a contract was written correctly. Keeping them in different processes means a bad transcript does not silently turn into a passing test.
Index once, query for as long as you keep the source
The mechanism the documentation describes is an index built per source. You run watch against a video URL or a local file, and the result is a searchable artifact you can query repeatedly. The README's phrasing is that you index a recording once and ask it questions for as long as you keep it, which means the cost profile is front-loaded: extraction and transcription happen at watch time, and later questions are retrieval against what was already extracted. The four stages shown in the project's own hero image are watch a source, remember it as OCR and transcript, resolve timestamped evidence, then run THE LOOP to critique and fix. That ordering is the architecture in miniature. There is no claim in the supplied material about how the index is stored, how large it grows, or what happens when the underlying file changes after indexing, and those are real gaps rather than omissions I can fill in. What is stated is that the surface is exposed three ways: MCP, a CLI, and a REST API. The MCP server is described as stdio with 39 tools, and the badge in the README also lists HTTP as a transport. A tool call in DeepWatch leaves a receipt naming what it touched, and every path a tool declares is checked against one workspace boundary so a tool cannot quietly write outside it. That boundary check is the part worth reading the source for, because it is the difference between an agent that is merely observable and one that is constrained.
Installing: the extras are not optional in practice
The README gives a specific warning that deserves to be repeated rather than paraphrased. A bare pip install watch-skill gives you the CLI, the verifier and the Bridge, and it cannot extract a frame. The first video you hand it stops at perceive.missing_dependency. The working install is pip install 'watch-skill[standard]', which brings frames, retrieval and the MCP server, followed by watch-skill doctor, which the README says checks and repairs what it can. From there the commands are watch-skill watch <video-url-or-file> and watch-skill ask <id> "what changed at 3:12?". The extras are named individually: [ocr] to read on-screen text, [whisper] for local transcription when a source has no captions, [loop] for the browser, and [all] for everything. That granularity is a genuine design choice, not packaging noise. Whisper is only needed when captions are absent, and OCR is only needed when the question concerns text rendered on screen. The failure message is designed to be actionable: doctor names the exact command for whatever is missing. For an existing MCP client the server is watch-skill serve, described as a stdio MCP server with 39 tools. There is also npx skills add oxbshw/watch-skill -g, which the README says installs the skills into 25 or more agents at once. The npm side carries @deepwatch/cli and @deepwatch/dsh-bundle, and the README states Node 22.19 or later.
Four verdicts, and why three of them are not the same as no
The verification contract is the more interesting half. The README states that the result is VERIFIED, FAILED, UNVERIFIED or INCONCLUSIVE, and adds the reasoning directly: four answers, because three of them are not the same as no. That is a deliberate refusal of the boolean that most CI-style checks collapse to. FAILED means the contract ran and the assertion did not hold. UNVERIFIED and INCONCLUSIVE cover the cases where the check could not be trusted to produce a meaningful answer, which is exactly the state that a two-valued system has to mislabel. For an agent workflow this distinction is load-bearing. If a DOM selector never matched because the page had not finished rendering, a boolean system reports failure and the agent retries against a condition that was never evaluated. A four-valued system can report something other than failure, and the agent's response can differ. The contracts themselves are frozen and cover file digests, JSON values, SQL results, HTTP responses and DOM state. Frozen is the operative word: the contract is written down before the run, so it cannot drift to accommodate whatever the agent happened to produce. The evaluation happens in a separate process, which the README frames as the reason the verdict is not model opinion.
DeepWatch, the harness bundle, and the Compare view
DeepWatch is the second product in the repository, and the relationship is worth stating precisely. It is described as a ready-made agent workspace built on the official DeepSeek Harness, with Watch Skill already composed in, installed by one command. The README's summary line is that Watch Skill sees and proves while DeepWatch is the workspace it comes built into. The workspace adds three things on top of the engine. Tool calls leave receipts naming what they touched. Paths declared by tools are checked against a single workspace boundary. Results carry a Core verdict that can be opened, and the Library keeps them after a restart, which means run history survives the process rather than living only in the transcript. It runs in the browser. The Compare view puts two runs of the same contract side by side and shows where their verdicts diverged, which is the natural diagnostic when a check that used to pass starts failing without an obvious code change. For engineers who already run a DeepSeek Harness, @deepwatch/dsh-bundle is the path that adds Watch without replacing the existing setup. The release history shows deepwatch-v0.1.4 and core-v1.4.3 both dated 2026-09-08, with deepwatch-v0.1.3 earlier the same day, so the workspace and the core are versioned and released on separate tracks.
Where it is the wrong tool, and what to use instead
The clearest limitation is stated by the project itself. Without the extras, frame extraction does not work at all, and the failure surfaces as perceive.missing_dependency rather than as a degraded result. That makes Watch Skill a poor fit for environments where you cannot install optional dependencies, where the wheel set is fixed by policy, or where a container is built once and never updated. The second limitation is scope. If your task is to transcribe a single audio file and print the text, Watch Skill's indexing model is overhead: you pay for a persistent index you will query once. A plain speech-to-text pipeline such as Whisper invoked directly, or a hosted transcription API, does that job with fewer moving parts and no index to keep. The difference in approach is that those tools return text and stop, while Watch Skill returns text with absolute timestamps attached to a source it retains, and pairs that with a verifier. If you do not need the timestamps or the verifier, you are carrying the cost without the benefit. The third limitation is that the supplied material does not describe index storage, retention policy, size growth, or behavior when a source file is modified after indexing. If any of those determine your decision, they are unresolved here and need to be read out of the repository rather than assumed.
Maintenance, licensing and what to check before adopting
The licence is MIT, which permits commercial and closed-source use and requires only that the copyright notice and permission notice be preserved. That is the plain reading of the identifier in the repository metadata; it is not legal advice, and if you redistribute the package inside a product you should read the LICENSE file rather than this paragraph. On maintenance cost, the observable facts are that the repository is not archived, the last push is dated 2026-09-08, and the release cadence in the supplied material shows core-v1.4.3 and deepwatch-v0.1.4 landing the same day. The workspace and the core version separately, so an upgrade to DeepWatch does not necessarily move the Watch Skill core, and the reverse holds too. The practical consequence is that you should pin both, and that the DeepSeek Harness underneath DeepWatch is a third version stream you inherit. The extras are the real upgrade surface. Each optional group pulls in dependencies you did not choose, and [whisper] in particular brings a local model that has its own download and storage footprint. Before adopting, run watch-skill doctor on the actual target machine rather than a development laptop, confirm which extras your policy allows, and read the workspace boundary rules if you intend to run DeepWatch against an existing directory layout. Those three checks cover the failure modes this material actually documents.
Editorial conclusion
Adopt Watch Skill if you already run an MCP client and need answers about recordings to cite openable timestamps, or if you need a verification verdict that does not come from the model being checked. Skip it if you only need whole-file transcription or a one-off summary, and skip it if you cannot install the extras, since a bare install stops at perceive.missing_dependency on the first video. Before committing, run watch-skill doctor on the target machine and read the workspace boundary rules, because the path restriction on tool writes is the part most likely to conflict with an existing harness layout.
Community notes