Self-hosted AI agent — local LLM with tool calling, WASM sandbox, hybrid RAG on pgvector, MCP, and prompt-injection defenses
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport streamable-http counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit ef5a4ea · analyzer v33 · 1h ago
skills & prompt files 2
- agent-rules elvisxd-byte-ef5a4ea/CLAUDE.md
- skill elvisxd-byte-ef5a4ea/skills/commits/SKILL.md
danger signals3
- suspicious endpoint 169.254.169.254 (cloud metadata) elvisxd-byte-ef5a4ea/tests/test_web_fetch.py :26
("http://169.254.169.254/latest/meta-data/", "los metadatos de la nube"), - committed secret Stripe live key elvisxd-byte-ef5a4ea/tests/test_redaccion.py :202
sk_liv…(32 chars, redacted) - committed secret GitHub fine-grained PAT elvisxd-byte-ef5a4ea/tests/test_redaccion.py :203
github…(35 chars, redacted)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 168
filesystem 53
- fs elvisxd-byte-ef5a4ea/agent/catalogo.py :75
from pathlib import Path - fs elvisxd-byte-ef5a4ea/agent/skills.py :21
from pathlib import Path - fs elvisxd-byte-ef5a4ea/api/main.py :14
from pathlib import Path - fs elvisxd-byte-ef5a4ea/api/routes/health.py :3
from pathlib import Path - fs elvisxd-byte-ef5a4ea/api/routes/ofertas.py :13
from pathlib import Path - fs elvisxd-byte-ef5a4ea/cli/byte_cli.py :17
import shutil - fs elvisxd-byte-ef5a4ea/cli/sesion.py :22
from pathlib import Path - fs elvisxd-byte-ef5a4ea/db/repository.py :16
from pathlib import Path - fs elvisxd-byte-ef5a4ea/empleo/cazador.py :19
from pathlib import Path - fs elvisxd-byte-ef5a4ea/empleo/criterio.py :21
from pathlib import Path - fs elvisxd-byte-ef5a4ea/empleo/memoria.py :17
from pathlib import Path - fs elvisxd-byte-ef5a4ea/empleo/mercado.py :188
from pathlib import Path
show 28 more
- fs elvisxd-byte-ef5a4ea/empleo/paginas.py :13
from pathlib import Path - fs elvisxd-byte-ef5a4ea/empleo/servidor.py :27
from pathlib import Path - fs elvisxd-byte-ef5a4ea/empleo/upwork.py :318
from pathlib import Path - fs elvisxd-byte-ef5a4ea/evals/correr.py :16
from pathlib import Path - fs elvisxd-byte-ef5a4ea/mcp_client/local.py :22
import shutil - fs elvisxd-byte-ef5a4ea/paper/comparar.py :16
from pathlib import Path - fs elvisxd-byte-ef5a4ea/paper/coste.py :23
from pathlib import Path - fs elvisxd-byte-ef5a4ea/paper/mercado.py :14
import shutil - fs elvisxd-byte-ef5a4ea/paper/registro.py :25
from pathlib import Path - fs elvisxd-byte-ef5a4ea/paper/rubrica.py :27
from pathlib import Path - fs elvisxd-byte-ef5a4ea/paper/trace.py :259
with open(temporal, "wb") as f: - fs elvisxd-byte-ef5a4ea/perfil/actualizar.py :15
from pathlib import Path - fs elvisxd-byte-ef5a4ea/perfil/sincronizar.py :20
import shutil - fs (weak) elvisxd-byte-ef5a4ea/tests/test_alertas.py :9
from pathlib import Path - fs (weak) elvisxd-byte-ef5a4ea/tests/test_archivos.py :9
from pathlib import Path - fs (weak) elvisxd-byte-ef5a4ea/tests/test_cli.py :1101
import shutil - fs (weak) elvisxd-byte-ef5a4ea/tests/test_cv.py :8
from pathlib import Path - fs (weak) elvisxd-byte-ef5a4ea/tests/test_empleo.py :14
from pathlib import Path - fs (weak) elvisxd-byte-ef5a4ea/tests/test_evals.py :8
from pathlib import Path - fs (weak) elvisxd-byte-ef5a4ea/tests/test_git.py :10
from pathlib import Path - fs (weak) elvisxd-byte-ef5a4ea/tests/test_imagen.py :12
from pathlib import Path - fs (weak) elvisxd-byte-ef5a4ea/tests/test_mercado.py :9
from pathlib import Path - fs (weak) elvisxd-byte-ef5a4ea/tests/test_n8n.py :10
import shutil - fs (weak) elvisxd-byte-ef5a4ea/tests/test_paper.py :9
from pathlib import Path - fs (weak) elvisxd-byte-ef5a4ea/tests/test_paper_comparacion.py :10
from pathlib import Path - fs (weak) elvisxd-byte-ef5a4ea/tests/test_paper_datos_vuelta.py :10
from pathlib import Path - fs (weak) elvisxd-byte-ef5a4ea/tests/test_paper_entorno.py :18
from pathlib import Path - fs (weak) elvisxd-byte-ef5a4ea/tests/test_paper_ordenes.py :10
from pathlib import Path
13 more not shown — this panel samples each group; the count above is the real total.
shell / exec 12
- shell elvisxd-byte-ef5a4ea/paper/mercado.py :15
import subprocess - shell elvisxd-byte-ef5a4ea/paper/vigia.py :46
import subprocess - shell elvisxd-byte-ef5a4ea/perfil/actualizar.py :13
import subprocess - shell elvisxd-byte-ef5a4ea/perfil/sincronizar.py :21
import subprocess - shell (weak) elvisxd-byte-ef5a4ea/tests/test_empleo.py :10
import subprocess - shell (weak) elvisxd-byte-ef5a4ea/tests/test_git.py :9
import subprocess - shell (weak) elvisxd-byte-ef5a4ea/tests/test_n8n.py :11
import subprocess - shell (weak) elvisxd-byte-ef5a4ea/tests/test_paper_entorno.py :15
import subprocess - shell (weak) elvisxd-byte-ef5a4ea/tests/test_sincronizar.py :10
import subprocess - shell elvisxd-byte-ef5a4ea/tools/cv.py :22
import subprocess - shell elvisxd-byte-ef5a4ea/tools/git.py :21
import subprocess - shell elvisxd-byte-ef5a4ea/tools/github.py :19
import subprocess
network 22
- net elvisxd-byte-ef5a4ea/agent/llm.py :5
import httpx - net elvisxd-byte-ef5a4ea/agent/runner.py :20
import httpx - net elvisxd-byte-ef5a4ea/cli/byte_cli.py :25
import httpx - net elvisxd-byte-ef5a4ea/empleo/aviso.py :14
import urllib.error - net elvisxd-byte-ef5a4ea/empleo/cazador.py :21
import httpx - net elvisxd-byte-ef5a4ea/empleo/fuentes.py :25
import urllib.parse - net elvisxd-byte-ef5a4ea/evals/correr.py :19
import httpx - net elvisxd-byte-ef5a4ea/mcp_client/client.py :25
import httpx - net elvisxd-byte-ef5a4ea/mcp_client/local.py :26
import httpx - net elvisxd-byte-ef5a4ea/paper/publicar.py :25
import urllib.error - net elvisxd-byte-ef5a4ea/paper/trace.py :33
import urllib.error - net elvisxd-byte-ef5a4ea/paper/vigia.py :48
import urllib.error
show 10 more
- net elvisxd-byte-ef5a4ea/rag/embeddings.py :7
import httpx - net (weak) elvisxd-byte-ef5a4ea/tests/fakes.py :129
import httpx - net (weak) elvisxd-byte-ef5a4ea/tests/test_cli.py :14
import httpx - net (weak) elvisxd-byte-ef5a4ea/tests/test_empleo.py :16
import httpx - net (weak) elvisxd-byte-ef5a4ea/tests/test_paper_comparacion.py :68
monkeypatch.setattr("urllib.request.urlopen", lambda *a, **k: llamadas.append(a)) - net (weak) elvisxd-byte-ef5a4ea/tests/test_rag.py :214
"""Reemplaza a httpx.AsyncClient dentro de Embedder.embed.""" - net (weak) elvisxd-byte-ef5a4ea/tests/test_web_fetch.py :125
raise wf.httpx.ConnectError("no hay") - net elvisxd-byte-ef5a4ea/tools/code_exec.py :10
import httpx - net elvisxd-byte-ef5a4ea/tools/paper.py :16
import urllib.error - net elvisxd-byte-ef5a4ea/tools/web_fetch.py :21
import socket
secrets 7
- secrets elvisxd-byte-ef5a4ea/cli/byte_cli.py :13
import getpass - secrets elvisxd-byte-ef5a4ea/empleo/aviso.py :48
"Authorization": f"Bearer {os.environ.get('PANEL_TOKEN', '')}", - secrets elvisxd-byte-ef5a4ea/empleo/cazador.py :91
clave = os.environ.get("GMAIL_APP_PASSWORD", "") - secrets elvisxd-byte-ef5a4ea/paper/publicar.py :203
"Authorization": f"Bearer {token or os.environ.get('PANEL_TOKEN', '')}", - secrets elvisxd-byte-ef5a4ea/paper/trace.py :243
"Authorization": f"Bearer {os.environ.get('PANEL_TOKEN', '')}", - secrets elvisxd-byte-ef5a4ea/paper/vigia.py :92
"Authorization": f"Bearer {os.environ.get('PANEL_TOKEN', '')}", - secrets (weak) elvisxd-byte-ef5a4ea/tests/test_cli.py :771
import getpass
database 6
- db elvisxd-byte-ef5a4ea/agent/catalogo.py :73
import sqlite3 - db elvisxd-byte-ef5a4ea/paper/comparar.py :12
import sqlite3 - db elvisxd-byte-ef5a4ea/paper/registro.py :21
import sqlite3 - db elvisxd-byte-ef5a4ea/paper/rubrica.py :24
import sqlite3 - db (weak) elvisxd-byte-ef5a4ea/tests/test_paper.py :8
import sqlite3 - db (weak) elvisxd-byte-ef5a4ea/tests/test_relevo.py :9
import sqlite3
declared dependencies 27
- mcp@>=1.12
- fastapi@>=0.115
- uvicorn@>=0.52.4
- pydantic@>=2.8
- pydantic-settings@>=2.4
- structlog@>=24.4
- itsdangerous@>=2.2
- slowapi@>=0.1.9
- httpx@>=0.27
- jinja2@>=3.1
- selectolax@>=0.3
- langgraph@>=1.2
show 15 more
- langchain-core@>=1.6
- langchain-ollama@>=1.1
- langgraph-checkpoint-postgres@>=3.1
- psycopg@>=3.3.5
- tavily-python@>=0.8
- pypdf@>=5.1
- python-multipart@>=0.0.18
- argon2-cffi@>=23.1
- pyjwt@>=2.9
- email-validator@>=2.2
- langchain-google-genai@>=4.4.0
- langchain-openai@>=1.6.2
- nh3@>=0.2
- langfuse@>=3.0
- sentry-sdk@>=2.0