grep using meaning and similarity instead of keywords - local/self-hosted, multimodal, and runnable on any user-defined corpus
Drift inferred · capture-to-capture
- HIGH code analysis flagged dynamic code execution ×2 in jeffbai996/vecgrep
- HIGH code analysis flagged dynamic code execution ×2 in jeffbai996/vecgrep
- HIGH code analysis flagged dynamic code execution ×2 in jeffbai996/vecgrep
- HIGH code analysis flagged dynamic code execution ×2 in jeffbai996/vecgrep
- HIGH code analysis flagged dynamic code execution ×2 in jeffbai996/vecgrep
- HIGH code analysis flagged dynamic code execution ×2 in jeffbai996/vecgrep
- HIGH code analysis flagged dynamic code execution ×2 in jeffbai996/vecgrep
- HIGH code analysis flagged dynamic code execution ×2 in jeffbai996/vecgrep
- HIGH code analysis flagged dynamic code execution ×2 in jeffbai996/vecgrep
- HIGH code analysis flagged dynamic code execution ×2 in jeffbai996/vecgrep
- HIGH code analysis flagged dynamic code execution ×2 in jeffbai996/vecgrep
- HIGH code analysis flagged dynamic code execution ×2 in jeffbai996/vecgrep
- HIGH code analysis flagged dynamic code execution ×2 in jeffbai996/vecgrep
- HIGH code analysis flagged dynamic code execution in jeffbai996/vecgrep
- HIGH code analysis flagged dynamic code execution in jeffbai996/vecgrep
- HIGH code analysis flagged dynamic code execution in jeffbai996/vecgrep
- HIGH code analysis flagged dynamic code execution in jeffbai996/vecgrep
- HIGH code analysis flagged dynamic code execution in jeffbai996/vecgrep
- HIGH code analysis flagged dynamic code execution in jeffbai996/vecgrep
- HIGH code analysis flagged dynamic code execution in jeffbai996/vecgrep
transport stdio · streamable-http · http counts 7 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
browse
-
get_chunk
-
get_corpus
-
get_source
-
incident
-
search
-
timeline
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 8d4fac9 · analyzer v33 · 1h ago
skills & prompt files 1
- agent-rules jeffbai996-vecgrep-8d4fac9/CLAUDE.md
danger signals2
- dynamic code execution pickle.loads() jeffbai996-vecgrep-8d4fac9/vecgrep/backend/store/bm25_sqlite.py :433
idx = pickle.loads(src.read_bytes()) - dynamic code execution pickle.loads() jeffbai996-vecgrep-8d4fac9/vecgrep/backend/store/bm25_store.py :251
idx = pickle.loads(p.read_bytes())
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 204
filesystem 78
- fs (weak) jeffbai996-vecgrep-8d4fac9/tests/conftest.py :10
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/eval_harness.py :23
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_adapters.py :11
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_admin_config.py :4
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_aliases.py :16
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_backup.py :6
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_bm25_bulk_persist.py :14
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_bm25_wal_maintenance.py :14
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_bm25_weight_per_corpus.py :11
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_budget.py :11
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_cache_sweep_service.py :6
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_cli_confirm_protected_ack.py :4
from pathlib import Path
show 28 more
- fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_cli_search_watch.py :9
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_cli_status.py :12
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_cli_watch_quiet_period.py :20
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_cli_watch_resilience.py :16
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_cli_watch_unchanged_skip.py :23
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_cli_write.py :39
assert "Cats sit on mats" in open(files[0]).read() - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_confirm_merge.py :3
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_eval_harness.py :15
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_eval_real_harness.py :10
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_explorer.py :9
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_mcp_direct_edit.py :19
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_mcp_direct_write.py :64
body = open(docs[0]).read() - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_mcp_propose.py :13
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_mcp_propose_merge.py :11
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_mcp_propose_meta_only.py :39
pend = json.loads(open(glob.glob(f"{h}/write/_pending/*.json")[0]).read()) - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_mutation_locks.py :5
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_oauth_provider.py :13
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_orphaned_source.py :14
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_propose_merge.py :7
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_public_mcp_ingress.py :139
with log_path.open("w+") as log: - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_registry_race.py :13
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_release_workflow.py :3
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_score_calibration.py :80
# hold a threadpool slot open (2026-08-18). The stub bypasses the loader, - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_security_boundaries.py :7
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_source_labels.py :18
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_test_state_isolation.py :2
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_web_workspace.py :4
from pathlib import Path - fs (weak) jeffbai996-vecgrep-8d4fac9/tests/test_write_codex_fixes.py :16
from pathlib import Path
38 more not shown — this panel samples each group; the count above is the real total.
shell / exec 3
- shell (weak) jeffbai996-vecgrep-8d4fac9/tests/test_public_mcp_ingress.py :121
import subprocess - shell jeffbai996-vecgrep-8d4fac9/vecgrep/backend/write/confirm.py :20
import subprocess - shell jeffbai996-vecgrep-8d4fac9/vecgrep/mcp/server.py :1167
import subprocess
network 20
- net (weak) jeffbai996-vecgrep-8d4fac9/tests/test_backup.py :155
monkeypatch.setattr("vecgrep.backend.backup.httpx.stream", lambda *a, **k: Download()) - net (weak) jeffbai996-vecgrep-8d4fac9/tests/test_cli_watch_resilience.py :3
Incident 2026-07-27: an embed backend under load raised httpx.ReadTimeout - net (weak) jeffbai996-vecgrep-8d4fac9/tests/test_oauth_root_discovery.py :241
from urllib.parse import urlencode - net (weak) jeffbai996-vecgrep-8d4fac9/tests/test_ollama_backend.py :12
import httpx - net (weak) jeffbai996-vecgrep-8d4fac9/tests/test_ollama_connect_timeout.py :13
import httpx - net (weak) jeffbai996-vecgrep-8d4fac9/tests/test_public_mcp_ingress.py :120
import socket - net jeffbai996-vecgrep-8d4fac9/vecgrep/backend/api/admin.py :7
from urllib.parse import urlsplit - net jeffbai996-vecgrep-8d4fac9/vecgrep/backend/api/routes.py :497
import urllib.error - net jeffbai996-vecgrep-8d4fac9/vecgrep/backend/auth/approval.py :12
from urllib.parse import parse_qs, urlencode, urlsplit - net jeffbai996-vecgrep-8d4fac9/vecgrep/backend/auth/rest.py :6
from urllib.parse import urlsplit - net jeffbai996-vecgrep-8d4fac9/vecgrep/backend/backup.py :28
import httpx - net jeffbai996-vecgrep-8d4fac9/vecgrep/backend/config.py :13
from urllib.parse import urlparse
show 8 more
- net jeffbai996-vecgrep-8d4fac9/vecgrep/backend/embed/factory.py :9
import httpx - net jeffbai996-vecgrep-8d4fac9/vecgrep/backend/embed/ollama.py :8
import httpx - net jeffbai996-vecgrep-8d4fac9/vecgrep/backend/explorer.py :14
from urllib.parse import urlparse - net jeffbai996-vecgrep-8d4fac9/vecgrep/backend/ingestion/adapters/url.py :5
import httpx - net jeffbai996-vecgrep-8d4fac9/vecgrep/backend/main.py :217
from urllib.parse import parse_qs, urlsplit - net jeffbai996-vecgrep-8d4fac9/vecgrep/backend/store/qdrant_store.py :45
import httpx - net jeffbai996-vecgrep-8d4fac9/vecgrep/cli/main.py :30
import httpx - net jeffbai996-vecgrep-8d4fac9/vecgrep/mcp/server.py :1719
from urllib.parse import urlsplit
secrets 1
- secrets jeffbai996-vecgrep-8d4fac9/vecgrep/cli/main.py :1735
import getpass
database 7
- db (weak) jeffbai996-vecgrep-8d4fac9/tests/test_bm25_runtime_integrity.py :2
import sqlite3 - db (weak) jeffbai996-vecgrep-8d4fac9/tests/test_bm25_wal_maintenance.py :13
import sqlite3 - db (weak) jeffbai996-vecgrep-8d4fac9/tests/test_embed_cache.py :9
import sqlite3 - db jeffbai996-vecgrep-8d4fac9/vecgrep/backend/api/routes.py :495
import sqlite3 - db jeffbai996-vecgrep-8d4fac9/vecgrep/backend/embed/cache.py :18
import sqlite3 - db jeffbai996-vecgrep-8d4fac9/vecgrep/backend/explorer_store.py :11
import sqlite3 - db jeffbai996-vecgrep-8d4fac9/vecgrep/backend/store/bm25_sqlite.py :24
import sqlite3
tool registrations 7
- search jeffbai996-vecgrep-8d4fac9/vecgrep/mcp/server.py :1204
- timeline jeffbai996-vecgrep-8d4fac9/vecgrep/mcp/server.py :1300
- incident jeffbai996-vecgrep-8d4fac9/vecgrep/mcp/server.py :1327
- get_chunk jeffbai996-vecgrep-8d4fac9/vecgrep/mcp/server.py :1351
- browse jeffbai996-vecgrep-8d4fac9/vecgrep/mcp/server.py :1368
- get_source jeffbai996-vecgrep-8d4fac9/vecgrep/mcp/server.py :1392
- get_corpus jeffbai996-vecgrep-8d4fac9/vecgrep/mcp/server.py :2575
declared dependencies 15
- mcp@>=1.27.1,<2
- fastapi@>=0.110
- uvicorn@>=0.27
- pydantic@>=2.13.4
- qdrant-client@>=1.9
- httpx@>=0.28.1
- click@>=8.1
- pypdf@>=4.0
- beautifulsoup4@>=4.12
- tiktoken@>=0.6
- rank-bm25@>=0.2.2
- openai@>=2.37.0
show 3 more
- sentence-transformers@>=2.7
- watchfiles@>=1.2.0
- pytest@>=8.0