VidXP (Video eXPlain) - Video Indexing Engine. Search in videos in natural language. 👀 Connect your Hermes / Claude / OpenClaw agents, allow them to understand videos with low token cost.
Drift inferred · capture-to-capture
- HIGH code analysis flagged dynamic code execution in grayhatdevelopers/vidxp
transport stdio · streamable-http · http counts 6 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
cancel_job
-
get_capability
-
get_job
-
list_capabilities
-
list_jobs
-
retry_job
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit be7d4ef · analyzer v28 · 1d ago
danger signals1
- dynamic code execution eval()/exec() grayhatdevelopers-vidxp-be7d4ef/src/vidxp/benchmarks/didemo_eval.py :41
exec(compile(source, str(evaluator), "exec"), namespace)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 198
filesystem 52
- fs grayhatdevelopers-vidxp-be7d4ef/setup.py :1
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/api_cli.py :5
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/api_routes/dependencies.py :5
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/app_paths.py :4
import shutil - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/application.py :4
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/application_models.py :4
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/artifact_service.py :6
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/branding.py :6
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/capabilities/dialogue/indexing.py :4
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/capabilities/registry.py :5
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/capabilities/search.py :6
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/cli.py :6
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/cli_commands/artifacts.py :3
import shutil - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/cli_commands/mcp.py :3
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/cli_commands/media.py :3
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/cli_commands/repositories.py :3
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/cli_commands/runtime.py :4
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/composition.py :5
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/control_plane.py :3
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/core/artifacts.py :4
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/core/contracts.py :8
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/core/manifest.py :13
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/core/media.py :5
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/core/runner.py :3
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/core/storage.py :3
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/core/storage_keys.py :1
from pathlib import PurePosixPath - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/core/video.py :5
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/frontend.py :3
import shutil - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/infrastructure/local_artifacts.py :4
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/infrastructure/local_catalog.py :3
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/infrastructure/local_files.py :3
from pathlib import Path, PurePosixPath - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/infrastructure/local_index.py :4
import shutil - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/infrastructure/local_media.py :11
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/infrastructure/local_objects.py :4
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/infrastructure/local_snapshots.py :6
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/infrastructure/local_worker.py :6
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/infrastructure/sql_snapshots.py :7
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/mcp_cli.py :7
import shutil - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/media_runtime.py :5
import shutil - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/media_service.py :4
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/model_contracts.py :4
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/network_share.py :6
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/ports.py :3
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/repositories.py :7
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/repository_layout.py :3
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/runtime.py :11
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/settings.py :6
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/upload_service.py :8
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/workflow_runtime.py :7
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/workflow_worker.py :8
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/utils/fix_readme_links.py :4
from pathlib import Path - fs grayhatdevelopers-vidxp-be7d4ef/utils/verify_published_distribution.py :9
from pathlib import Path
shell / exec 5
- shell grayhatdevelopers-vidxp-be7d4ef/src/vidxp/core/manifest.py :7
import subprocess - shell grayhatdevelopers-vidxp-be7d4ef/src/vidxp/infrastructure/local_artifacts.py :3
import subprocess - shell grayhatdevelopers-vidxp-be7d4ef/src/vidxp/infrastructure/local_media.py :8
import subprocess - shell grayhatdevelopers-vidxp-be7d4ef/src/vidxp/infrastructure/local_worker.py :4
import subprocess - shell grayhatdevelopers-vidxp-be7d4ef/src/vidxp/media_runtime.py :6
import subprocess
network 10
- net grayhatdevelopers-vidxp-be7d4ef/src/vidxp/core/contracts.py :11
from urllib.parse import quote - net grayhatdevelopers-vidxp-be7d4ef/src/vidxp/core/storage.py :5
from urllib.parse import urlsplit - net grayhatdevelopers-vidxp-be7d4ef/src/vidxp/health_cli.py :6
from urllib.request import urlopen - net grayhatdevelopers-vidxp-be7d4ef/src/vidxp/infrastructure/ollama_query.py :3
import httpx - net grayhatdevelopers-vidxp-be7d4ef/src/vidxp/network_share.py :5
import socket - net grayhatdevelopers-vidxp-be7d4ef/src/vidxp/runtime.py :61
import httpx - net grayhatdevelopers-vidxp-be7d4ef/src/vidxp/settings.py :7
from urllib.parse import urlsplit - net grayhatdevelopers-vidxp-be7d4ef/src/vidxp/upload_service.py :10
from urllib.error import HTTPError, URLError - net grayhatdevelopers-vidxp-be7d4ef/utils/fix_readme_links.py :5
from urllib.parse import urljoin, urlparse, urlunparse, parse_qsl, urlencode - net grayhatdevelopers-vidxp-be7d4ef/utils/verify_published_distribution.py :11
from urllib.error import HTTPError
database 8
- db grayhatdevelopers-vidxp-be7d4ef/src/vidxp/health_cli.py :8
from sqlalchemy import create_engine, select - db grayhatdevelopers-vidxp-be7d4ef/src/vidxp/infrastructure/local_catalog.py :5
from sqlalchemy import Column, Integer, MetaData, Table, insert, select, update - db grayhatdevelopers-vidxp-be7d4ef/src/vidxp/infrastructure/sql_catalog.py :8
from sqlalchemy import Engine, create_engine, delete, event, func, insert, select, update - db grayhatdevelopers-vidxp-be7d4ef/src/vidxp/infrastructure/sql_snapshots.py :11
from sqlalchemy import Engine, insert, select, text, update - db grayhatdevelopers-vidxp-be7d4ef/src/vidxp/infrastructure/sql_tables.py :1
from sqlalchemy import ( - db grayhatdevelopers-vidxp-be7d4ef/src/vidxp/migrations/env.py :2
from sqlalchemy import engine_from_config, pool - db grayhatdevelopers-vidxp-be7d4ef/src/vidxp/migrations/versions/20260729_01_catalog_uploads.py :9
import sqlalchemy as sa - db grayhatdevelopers-vidxp-be7d4ef/src/vidxp/upload_service.py :14
from sqlalchemy.engine import Connection
tool registrations 6
- list_capabilities grayhatdevelopers-vidxp-be7d4ef/src/vidxp/mcp.py :450
- get_capability grayhatdevelopers-vidxp-be7d4ef/src/vidxp/mcp.py :465
- list_jobs grayhatdevelopers-vidxp-be7d4ef/src/vidxp/mcp.py :746
- get_job grayhatdevelopers-vidxp-be7d4ef/src/vidxp/mcp.py :767
- retry_job grayhatdevelopers-vidxp-be7d4ef/src/vidxp/mcp.py :780
- cancel_job grayhatdevelopers-vidxp-be7d4ef/src/vidxp/mcp.py :807
install hooks 1
- setup.py grayhatdevelopers-vidxp-be7d4ef/setup.py :8
class BuildPy(build_py):
declared dependencies 23
- dbos@>=2.28,<3
- filelock@>=3.32,<4
- packaging@>=26.2,<27
- platformdirs@>=4.11,<5
- pydantic@>=2.13.4,<3
- pydantic-settings@>=2.14.2,<3
- rich@>=15,<16
- sqlalchemy@>=2.0.51,<2.1
- typer@>=0.27,<1
- serde_json@1.0.151
- tauri-build@2.6.3
- atomic-write-file@0.3.0
- hex@0.4.3
- log@0.4.29
- serde@1.0.229
- sha2@0.11.0
- tauri@2.11.5
- tauri-plugin-log@2.9.0
- tauri-plugin-dialog@2.7.2
- tauri-plugin-opener@2.5.4
- tauri-plugin-shell@2.3.5
- tauri-plugin-single-instance@2.4.3
- wait-timeout@0.2.1