github Python analyzed 0e359f8

amitpatole/agent-vision

github

Eyes for AI coding agents 👁️ — render → perceive → report → fix → re-render. A machine-graded visual feedback loop (DOM/contrast/OCR-grounded + optional vision LLM) agents consume to self-correct before claiming done.

maintainer
amitpatole
licence
MIT
first seen
2026-06-19
last seen
2026-09-10
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 14 tools
transport stdio · http counts 14 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • analyze_artifact
  • capture_screen
  • check_artifact
  • conform_artifact
  • contact_sheet
  • doctor
  • loop_iterate
  • manage_baseline
  • ocr_artifact
  • perceive_handoff
  • render_artifact
  • start_loop
  • visual_diff
  • watch_artifact
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 0e359f8 · analyzer v33 · 5d ago

skills & prompt files 1

danger signals4

code evidence vv0.11.0 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 111

filesystem 38

  • fs amitpatole-agent-vision-0e359f8/brand/render_og.py :10 from pathlib import Path
  • fs (weak) amitpatole-agent-vision-0e359f8/examples/contact_sheet.py :7 from pathlib import Path
  • fs (weak) amitpatole-agent-vision-0e359f8/examples/fix_loop.py :8 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/adapters/cli.py :11 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/adapters/doctor.py :11 import shutil
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/backends/_image.py :7 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/config.py :10 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/core/analyze.py :8 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/core/baseline.py :11 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/core/capture.py :6 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/core/checks/__init__.py :9 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/core/checks/contrast_ocr.py :20 from pathlib import Path
show 26 more
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/core/checks/contrast_pixel.py :18 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/core/checks/layout.py :6 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/core/checks/slides.py :95 img = Image.open(img_path)
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/core/diff.py :10 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/core/render.py :6 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/core/tiling.py :17 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/core/watch.py :11 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/imageguard.py :14 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/ocr/tesseract.py :5 import shutil
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/office.py :29 import shutil
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/pathsafe.py :18 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/renderers/base.py :5 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/renderers/desktop_renderer.py :20 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/renderers/image_renderer.py :5 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/renderers/motion.py :30 import shutil
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/renderers/office_renderer.py :10 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/renderers/pdf_renderer.py :11 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/renderers/playwright_renderer.py :16 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/sources.py :12 from pathlib import Path
  • fs amitpatole-agent-vision-0e359f8/src/agentvision/workspace.py :20 import shutil
  • fs (weak) amitpatole-agent-vision-0e359f8/tests/unit/test_clipped_text.py :9 from pathlib import Path
  • fs (weak) amitpatole-agent-vision-0e359f8/tests/unit/test_desktop_capture.py :5 from pathlib import Path
  • fs (weak) amitpatole-agent-vision-0e359f8/tests/unit/test_ephemeral.py :3 from pathlib import Path
  • fs (weak) amitpatole-agent-vision-0e359f8/tests/unit/test_field_report_fixes.py :126 assert Image.open(c).size[0] >= 32
  • fs (weak) amitpatole-agent-vision-0e359f8/tests/unit/test_office.py :10 from pathlib import Path
  • fs (weak) amitpatole-agent-vision-0e359f8/tests/unit/test_tiling.py :26 w, h = Image.open(t).size

shell / exec 3

  • shell amitpatole-agent-vision-0e359f8/src/agentvision/adapters/doctor.py :12 import subprocess
  • shell (weak) amitpatole-agent-vision-0e359f8/tests/integration/test_motion_end_to_end.py :7 import subprocess
  • shell (weak) amitpatole-agent-vision-0e359f8/tests/integration/test_motion_security.py :9 import subprocess

network 7

  • net amitpatole-agent-vision-0e359f8/src/agentvision/netguard.py :20 import socket
  • net amitpatole-agent-vision-0e359f8/src/agentvision/proxy.py :17 from urllib.parse import urlsplit
  • net amitpatole-agent-vision-0e359f8/src/agentvision/renderers/desktop_renderer.py :21 from urllib.parse import unquote, urlparse
  • net amitpatole-agent-vision-0e359f8/src/agentvision/renderers/playwright_renderer.py :17 from urllib.parse import urlparse
  • net amitpatole-agent-vision-0e359f8/src/agentvision/sources.py :13 from urllib.parse import urlparse
  • net (weak) amitpatole-agent-vision-0e359f8/tests/integration/test_motion_end_to_end.py :78 import socket
  • net (weak) amitpatole-agent-vision-0e359f8/tests/unit/test_security_ssrf.py :80 import socket

tool registrations 14

  • analyze_artifact amitpatole-agent-vision-0e359f8/src/agentvision/adapters/mcp_server.py :50
  • capture_screen amitpatole-agent-vision-0e359f8/src/agentvision/adapters/mcp_server.py :70
  • conform_artifact amitpatole-agent-vision-0e359f8/src/agentvision/adapters/mcp_server.py :98
  • perceive_handoff amitpatole-agent-vision-0e359f8/src/agentvision/adapters/mcp_server.py :118
  • watch_artifact amitpatole-agent-vision-0e359f8/src/agentvision/adapters/mcp_server.py :136
  • check_artifact amitpatole-agent-vision-0e359f8/src/agentvision/adapters/mcp_server.py :153
  • render_artifact amitpatole-agent-vision-0e359f8/src/agentvision/adapters/mcp_server.py :161
  • contact_sheet amitpatole-agent-vision-0e359f8/src/agentvision/adapters/mcp_server.py :176
  • visual_diff amitpatole-agent-vision-0e359f8/src/agentvision/adapters/mcp_server.py :185
  • ocr_artifact amitpatole-agent-vision-0e359f8/src/agentvision/adapters/mcp_server.py :192
  • start_loop amitpatole-agent-vision-0e359f8/src/agentvision/adapters/mcp_server.py :202
  • loop_iterate amitpatole-agent-vision-0e359f8/src/agentvision/adapters/mcp_server.py :221
show 2 more
  • manage_baseline amitpatole-agent-vision-0e359f8/src/agentvision/adapters/mcp_server.py :231
  • doctor amitpatole-agent-vision-0e359f8/src/agentvision/adapters/mcp_server.py :241

declared dependencies 26

  • mcp@>=1.2
  • agentsensory@>=0.1
  • pydantic@>=2.6
  • pydantic-settings@>=2.2
  • pillow@>=10.0
  • numpy@>=1.26
  • scikit-image@>=0.22
  • typer@>=0.12
  • platformdirs@>=4.0
  • filelock@>=3.13
  • playwright@>=1.44
  • pdf2image@>=1.17
show 14 more
  • pytesseract@>=0.3.10
  • pyspellchecker@>=0.8
  • imageio-ffmpeg@>=0.4
  • jeepney@>=0.8
  • anthropic@>=0.40
  • openai@>=1.40
  • google-genai@>=0.3
  • fastapi@>=0.110
  • uvicorn@>=0.29
  • python-multipart@>=0.0.9
  • pytest@>=8.0
  • pytest-asyncio@>=0.23
  • ruff@>=0.5
  • mypy@>=1.10

transport_posture 1

  • binds all interfaces (0.0.0.0) amitpatole-agent-vision-0e359f8/tests/unit/test_security_rest.py :94 rest.serve(host="0.0.0.0", port=0)