HALLUX
Verifica que un paquete, módulo o DOI exista en su registro (npm, PyPI, crates.io, Go, Maven, NuGet, DOIs) antes de que un agente lo instale, importe o cite. Señala nombres que los modelos inventan y los que han sido ocupados desde entonces. Gratis, sin clave.
Servidor MCP alojado
npx add-mcp 'https://api.blvkware.dev/hallux/mcp'Se instala en Claude Code, Codex, Cursor y más
Documentación
HALLUX
Un registro de identificadores que no existen, pero que los modelos creen con confianza que sí. Verifica un nombre de paquete contra su registro antes de que cualquier cosa lo instale, y descubre si el nombre es uno que los modelos de lenguaje inventan.
Un agente escribe pip install requests-oauth2-helper. El nombre es plausible, el agente está seguro, y el paquete nunca ha existido. O la instalación falla y el agente quema un bucle de reintentos, o alguien ya ha registrado ese nombre porque vio a un modelo emitirlo mil veces.
El segundo caso se llama slopsquatting. Es el único ataque a la cadena de suministro donde la lista de objetivos del atacante se genera para ellos, gratis, por las propias herramientas de las víctimas.
Pruébalo ahora
Sin cuenta, sin clave, sin registro. Un comando:
curl https://api.blvkware.dev/hallux/v1/check/pkg.pypi/requests-oauth2-helper
{
"namespace": "pkg.pypi",
"value": "requests-oauth2-helper",
"verdict": "absent",
"confidence": 1,
"evidence": {
"registryStatus": "not_found",
"nearestExisting": [
"requests-oauthlib",
"requests",
"requests-toolbelt"
]
},
"recommendation": "do_not_install",
"successor": "requests-oauthlib"
}
Seis veredictos
| Veredicto | Significado | Qué hacer |
|---|---|---|
| exists | Presente en el registro autoritativo ahora. | Continúa. |
| deprecated | Existe, pero retirado, eliminado o reemplazado. | Continúa con el reemplazo indicado. |
| absent | No presente, y sin registro de que un modelo lo haya inventado. | Detente. Probablemente un error tipográfico o un nombre privado. |
| phantom | No presente, y los modelos lo emiten repetidamente. | Detente. Una alucinación con historial. |
| squat | Era un phantom, y alguien lo ha registrado desde entonces. | Bloquea. Trátalo como hostil hasta que se demuestre lo contrario. |
| unknown | Registro inalcanzable, o fuera de cobertura. | Tu política decide. Nunca lo leas como permiso. |
HALLUX nunca devuelve "exists" ante la incertidumbre. Cuando un registro no se puede alcanzar, la respuesta es unknown, con un código de razón. Eso se aplica en el código en lugar de prometerse en un documento: un registro que dice no y un registro que no responde son valores diferentes de tipos diferentes, por lo que uno no puede confundirse con el otro.
Squat es el que nadie más vende
Cada registro publica lo que contiene. Ninguno publica lo que no contiene, porque la ausencia es ilimitada. La parte útil de la ausencia, los nombres a los que los modelos realmente recurren, solo se puede acumular con el tiempo muestreando modelos de producción y confirmando contra el registro que el nombre no está allí.
Una vez que el libro mayor ha registrado un nombre que los modelos siguen inventando, la misma verificación lleva ese historial. Este es el ejemplo de la especificación, no una respuesta en vivo:
{
"namespace": "pkg.pypi",
"value": "requests-oauth2-helper",
"verdict": "phantom",
"confidence": 0.97,
"evidence": {
"registryStatus": "not_found",
"attestations": 412,
"observedFrom": ["gpt-class", "claude-class", "llama-class"],
"nearestExisting": ["requests-oauthlib"]
},
"recommendation": "do_not_install",
"successor": "requests-oauthlib"
}
Ese registro es lo que hace posible el cuarto veredicto. Un nombre que los modelos inventan, que luego un extraño registra, es un ataque a la cadena de suministro visible antes de la primera instalación. Cualquier otra herramienta que mire ese paquete ve un paquete real en un registro real y dice instálalo.
Cómo un nombre se convierte en phantom. Una atestación es un modelo, en una clase de prompt, en un día. Un nombre se convierte en phantom con diez atestaciones de al menos dos familias de modelos, y solo después de que su ausencia se haya confirmado de forma independiente dos veces, con al menos 24 horas de diferencia, contra el registro autoritativo. Los phantoms sin atestación en 180 días se archivan en lugar de eliminarse, y aún responden.
El método se publica completo, porque la credibilidad es el producto aquí. La especificación lleva la semántica de los veredictos, los espacios de nombres, el formato de recibo y la metodología del corpus.
Cobertura
7 espacios de nombres responden hoy: cite.doi, pkg.crates, pkg.go, pkg.maven, pkg.npm, pkg.nuget, pkg.pypi.
Los espacios de nombres mencionados en la especificación pero aún no activos devuelven unknown con una razón, nunca un error. El flujo de control de un agente no se rompe cuando HALLUX crece un espacio de nombres, y no se rompe cuando encuentra uno que no se ha construido.
Llámalo desde un agente
El endpoint por lotes acepta hasta 100 identificadores en un solo viaje de ida y vuelta, que es la forma que quiere una tubería de CI o un marco de agente. Las respuestas en un nivel de pago llevan un recibo Ed25519 sobre el resultado, para que un operador pueda probar después de un incidente que la verificación ocurrió y qué dijo.
También hay un servidor MCP que expone la misma capacidad como herramientas, para que un agente de codificación pueda verificar un comando antes de ejecutarlo sin que nadie conecte una integración. Responde en https://api.blvkware.dev/hallux/mcp sobre Streamable HTTP, sin cuenta y sin clave:
claude mcp add --transport http hallux https://api.blvkware.dev/hallux/mcp
Cualquier otro host MCP toma la misma dirección. Las herramientas son hallux_check_command, para llamar antes de una instalación, hallux_check_manifest, después de editar un archivo de dependencias, y hallux_check para identificadores; hallux_watch se rechaza hasta que se configure almacenamiento duradero. Cada identificador que una herramienta resuelve cuenta contra el nivel abierto, como cualquier otra verificación.
Precios
A HALLUX nunca se le paga más porque te bloqueó. A HALLUX nunca se le paga más porque te bloqueó. La facturación es una función de los identificadores enviados, no de los veredictos devueltos. Un proveedor de verificación pagado por hallazgo tiene una razón comercial para encontrar más.
Eso no es una promesa, es una propiedad. La función que fija el precio de una solicitud toma un recuento de identificadores y no tiene parámetro a través del cual un veredicto pueda llegar a ella, y el conjunto de pruebas resuelve el mismo lote bajo cuatro estados de registro diferentes y afirma un solo cargo.
Solo el nivel abierto está disponible hoy. Los niveles de pago y las vigilancias a continuación están preciados y documentados, pero ningún canal de pago está conectado aún, por lo que ninguno de ellos se puede comprar. El nivel abierto no necesita cuenta ni clave.
| Nivel | Para quién es | Precio |
|---|---|---|
| Open | Cualquier agente o desarrollador, sin cuenta | Gratis, 500 identificadores al día |
| Metered | Un agente individual o un equipo pequeño | $0.0008 por identificador |
| Team | Una empresa que lo pone en CI | $299/mes o $2,990/año |
| Feed | Registros, proveedores de IDE, plataformas de CI, proveedores de seguridad | $1,500/mes o $15,000/año |
| Embedded | Una plataforma que lo envía dentro de su propio producto | desde $2,500/mes |
El nivel abierto es de 500 identificadores al día para cada cliente, y todo el tráfico gratuito junto se extrae de un grupo de 50,000 al día. El grupo es lo que mantiene honesto un nivel gratuito sin cuenta: nadie puede hacerlo más grande fingiendo ser muchos clientes. El tráfico de pago nunca lo toca, y la página de límites dice cómo se informan ambos.
El gasto medido se detiene en el precio de Team. Por encima de 373,750 identificadores en un mes calendario, la cuenta pasa a Team y ya no se mide. Una tubería de compilación pregunta sobre los mismos pocos miles de paquetes establecidos todo el día, esas respuestas no cuestan nada de servir, y una factura hecha de ellas se leería como un impuesto por hacer lo correcto.
Las vigilancias cuestan $0.02 por identificador vigilado al mes, 100 incluidas en Team e ilimitadas en Feed. Se precian según lo que elegiste vigilar, nunca según si una se disparó. Un compromiso anual es de doce meses cobrados como diez.
Los precios legibles por máquina, idénticos a los números anteriores y generados desde la misma fuente, están en /hallux/v1/pricing y en el catálogo de agentes.
De dónde vino
HALLUX incorpora pkgguard, una puerta de seguridad de paquetes de código abierto que puedes ejecutar frente a tu propio gestor de paquetes, y toma su suministro de observaciones de slopbench, que mide con qué frecuencia un modelo nombra una dependencia a la que ningún paquete responde. Ambos son Apache 2.0 y gratuitos para usar por sí solos.
BlvkWare.