{"adoption": {"forks": 425, "observed_at": "2026-08-28T04:08:49.216405+00:00", "stars": 4433}, "canonical_url": "https://ross.abutalabs.com/products/sentrysearch", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Semantic search over videos using Gemini Embedding 2 or Qwen3-VL.", "domain": ["machine-learning", "developer-tools"], "enriched": true, "function": ["search-engine", "vector-database", "video-processing", "machine-learning", "cli"], "health_score": 98, "homepage": "https://youtu.be/QkYUSlu_G9g", "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["ssrajadh/sentrysearch"], "name": "ssrajadh/sentrysearch", "platform": ["windows", "python", "cli"], "pushed_at": "2026-08-22T23:50:58+00:00", "repo": "ssrajadh/sentrysearch", "stars": 4433, "tags": ["semantic-search", "video-embeddings", "chromadb", "gemini-embedding", "qwen3-vl", "dashcam", "tesla", "clip-trimming", "multimodal-search", "video", "search", "macos", "linux"], "topics": ["chromadb", "dashcam", "gemini", "gemini-embedding-2", "semantic-search", "video", "mp4", "tesla", "qwen3-vl", "search", "search-engine"], "urls": [], "use_cases": ["find a specific event in hours of dashcam footage by typing a description", "search Tesla sentry mode videos for a moment like 'car door opened'", "search video by uploading a reference image instead of text", "extract a trimmed clip of a matched event from an mp4", "index large video archives locally with a local vision-language model", "run the whole pipeline offline without any API key"], "what_it_is": "SentrySearch is a Python CLI tool that provides semantic search over video footage by embedding video chunks with Gemini Embedding, Alibaba DashScope Qwen, or a local Qwen3-VL model, and storing vectors in a local ChromaDB database. Text or image queries return the best-matching segment automatically trimmed from the original video as a clip.", "when_to_avoid": ["you need real-time or live-stream video search", "you want a polished GUI application rather than a CLI workflow", "your videos lack visual events the embedding models can represent (e.g., mostly audio-driven content)"], "when_to_choose": ["you need natural-language search across large collections of video files", "you want a local-first index (ChromaDB) with an optional no-API-key local model", "you work with dashcam or Tesla footage and want clip extraction plus companion tools for merging and redaction"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/sentrysearch", "repo": "ssrajadh/sentrysearch", "role": "main", "score": 65}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:49.216405+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:20:53.543088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79f6656716d52810353bf58e36d57811ecfc8c2cd977912d263d43666a68c1a7", "fetched_at": "2026-08-28T04:08:49.216405+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ssrajadh/sentrysearch"}, {"content_hash": "6d539387bcf1ad95b6804be20fda5055bbe14e24650b0b9a898c3a8c2881f589", "fetched_at": "2026-08-29T09:08:13.850208+00:00", "kind": "homepage", "missing": false, "url": "https://youtu.be/QkYUSlu_G9g"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:49.216405+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:20:53.543088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79f6656716d52810353bf58e36d57811ecfc8c2cd977912d263d43666a68c1a7", "fetched_at": "2026-08-28T04:08:49.216405+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ssrajadh/sentrysearch"}, {"content_hash": "6d539387bcf1ad95b6804be20fda5055bbe14e24650b0b9a898c3a8c2881f589", "fetched_at": "2026-08-29T09:08:13.850208+00:00", "kind": "homepage", "missing": false, "url": "https://youtu.be/QkYUSlu_G9g"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:20:53.543088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79f6656716d52810353bf58e36d57811ecfc8c2cd977912d263d43666a68c1a7", "fetched_at": "2026-08-28T04:08:49.216405+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ssrajadh/sentrysearch"}, {"content_hash": "6d539387bcf1ad95b6804be20fda5055bbe14e24650b0b9a898c3a8c2881f589", "fetched_at": "2026-08-29T09:08:13.850208+00:00", "kind": "homepage", "missing": false, "url": "https://youtu.be/QkYUSlu_G9g"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:49.216405+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:49.216405+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:49.216405+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:20:53.543088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79f6656716d52810353bf58e36d57811ecfc8c2cd977912d263d43666a68c1a7", "fetched_at": "2026-08-28T04:08:49.216405+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ssrajadh/sentrysearch"}, {"content_hash": "6d539387bcf1ad95b6804be20fda5055bbe14e24650b0b9a898c3a8c2881f589", "fetched_at": "2026-08-29T09:08:13.850208+00:00", "kind": "homepage", "missing": false, "url": "https://youtu.be/QkYUSlu_G9g"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:49.216405+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:49.216405+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:20:53.543088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79f6656716d52810353bf58e36d57811ecfc8c2cd977912d263d43666a68c1a7", "fetched_at": "2026-08-28T04:08:49.216405+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ssrajadh/sentrysearch"}, {"content_hash": "6d539387bcf1ad95b6804be20fda5055bbe14e24650b0b9a898c3a8c2881f589", "fetched_at": "2026-08-29T09:08:13.850208+00:00", "kind": "homepage", "missing": false, "url": "https://youtu.be/QkYUSlu_G9g"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:49.216405+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:49.216405+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:49.216405+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:20:53.543088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79f6656716d52810353bf58e36d57811ecfc8c2cd977912d263d43666a68c1a7", "fetched_at": "2026-08-28T04:08:49.216405+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ssrajadh/sentrysearch"}, {"content_hash": "6d539387bcf1ad95b6804be20fda5055bbe14e24650b0b9a898c3a8c2881f589", "fetched_at": "2026-08-29T09:08:13.850208+00:00", "kind": "homepage", "missing": false, "url": "https://youtu.be/QkYUSlu_G9g"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:49.216405+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:49.216405+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:20:53.543088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79f6656716d52810353bf58e36d57811ecfc8c2cd977912d263d43666a68c1a7", "fetched_at": "2026-08-28T04:08:49.216405+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ssrajadh/sentrysearch"}, {"content_hash": "6d539387bcf1ad95b6804be20fda5055bbe14e24650b0b9a898c3a8c2881f589", "fetched_at": "2026-08-29T09:08:13.850208+00:00", "kind": "homepage", "missing": false, "url": "https://youtu.be/QkYUSlu_G9g"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:20:53.543088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79f6656716d52810353bf58e36d57811ecfc8c2cd977912d263d43666a68c1a7", "fetched_at": "2026-08-28T04:08:49.216405+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ssrajadh/sentrysearch"}, {"content_hash": "6d539387bcf1ad95b6804be20fda5055bbe14e24650b0b9a898c3a8c2881f589", "fetched_at": "2026-08-29T09:08:13.850208+00:00", "kind": "homepage", "missing": false, "url": "https://youtu.be/QkYUSlu_G9g"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:20:53.543088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79f6656716d52810353bf58e36d57811ecfc8c2cd977912d263d43666a68c1a7", "fetched_at": "2026-08-28T04:08:49.216405+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ssrajadh/sentrysearch"}, {"content_hash": "6d539387bcf1ad95b6804be20fda5055bbe14e24650b0b9a898c3a8c2881f589", "fetched_at": "2026-08-29T09:08:13.850208+00:00", "kind": "homepage", "missing": false, "url": "https://youtu.be/QkYUSlu_G9g"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:20:53.543088+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "79f6656716d52810353bf58e36d57811ecfc8c2cd977912d263d43666a68c1a7", "fetched_at": "2026-08-28T04:08:49.216405+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ssrajadh/sentrysearch"}, {"content_hash": "6d539387bcf1ad95b6804be20fda5055bbe14e24650b0b9a898c3a8c2881f589", "fetched_at": "2026-08-29T09:08:13.850208+00:00", "kind": "homepage", "missing": false, "url": "https://youtu.be/QkYUSlu_G9g"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 12, "rhythm": 52}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["prerelease_only", "young"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 169, "days_push": 11, "days_rel": 108, "gap_med": null, "n_releases_24m": 1}, "score": 65, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}