This release is a pre-release and may not be stable for production use.
asilo-core
Implementación Python de referencia candidata para controles de sistemas multiagente. Aspira a traducir una revisión identificable de ASILO a contratos, decisiones de política, auditoría y revisión humana sin definir la metodología dentro del paquete.
Perfil Milpa: library (P5) · Distribución prevista: PyPI asilo-core · Estado: alpha parcial no publicable
TL;DR
enforce_schemaya valida resultados Pydantic sync/async y nunca reejecuta la función.asilo statusyasilo doctorinforman capacidades sin red ni secretos.guardrail, HITL, auditoría y comandos de dominio continúan bloqueados.- El scaffolding operativo vive hoy en
kasai-crew scaffold; no se duplica aquí. - Empieza por Quickstart, diagramas e índice.
Documentación
Cuatro niveles, de lo general a lo particular, con ruta de lectura por perfil en
docs/INDEX.md:
| Perfil | Empieza en |
|---|---|
| No técnico | docs/01-manifiesto/ — la aduana: el modelo propone, la librería valida la forma |
| Arquitecto | docs/02-diagramas/ — contexto, capas, secuencia, escalada humana |
| Operador | docs/03-operacion/ — instalación, comandos, qué no está implementado |
| Auditor | docs/04-contratos/ — API, axiomas, errores, ADR, fuentes de verdad |
Sitio navegable (MkDocs Material, con el estándar documental de Horcón), desde la raíz del repo:
../horcon/.venv/bin/python -m horcon audit-docs . # frontmatter, navegación, enlaces
../horcon/.venv/bin/python -m horcon docs build . # ensambla tmp/site-src/ y construye tmp/site/
../horcon/.venv/bin/python -m horcon docs serve . # sirve en 127.0.0.1
Diseño objetivo
Un agente autónomo puede producir información falsa, filtrar datos o solicitar acciones irreversibles. El diseño objetivo interpone controles entre el modelo y el mundo:
| Control | Mecanismo objetivo | Estado actual |
|---|---|---|
| Esquema | @enforce_schema valida forma contra Pydantic |
implementado; una ejecución, sin repairs |
| Política | @guardrail obtiene una decisión antes de ejecutar |
stub; contrato pendiente |
| Revisión humana | @hitl persiste, autoriza y reanuda una decisión |
stub; protocolo pendiente |
| Auditoría | eventos minimizados y trazables | inexistente |
Un decorador dentro del mismo proceso no constituye por sí solo una frontera de seguridad: código con el mismo privilegio puede evitarlo. El enforcement real depende también del sistema consumidor, sus herramientas, credenciales y puntos de aplicación.
Qué protege cada pieza, y qué no
| Pieza | Qué protege hoy | Qué NO protege |
|---|---|---|
enforce_schema |
La forma del resultado contra un modelo Pydantic; una sola ejecución, sin reintentos | Que el contenido sea verdadero, que esté autorizado, o que no lleve una instrucción escondida para el siguiente agente (ver docs/asilo/seguridad/aduana-llm.md) |
guardrail, hitl |
Nada: son firmas con contrato escrito que lanzan NotImplementedError |
Cualquier cosa que su nombre sugiera; llamarlos no bloquea ni pausa nada todavía |
asilo status / asilo doctor |
Informar, sin red, qué existe | Que lo informado sea "seguro"; son diagnóstico, no control |
Lo que debe poner quien consume esta librería: autenticación y autorización de quien invoca la acción, credenciales de mínimo privilegio, límites de red y un punto de aplicación fuera del proceso que pueda de verdad impedir la acción si el decorador falla o se evade.
Una lección concreta, tomada de un hallazgo real en el framework hermano Horcón y registrada en
reports/2026-09-22-mejoras-desde-horcon.md: cuando
exista una revisión humana real (hitl dejará de ser un stub), su aprobación no puede
representarse con un booleano autodeclarado (approved: true) ni con un campo de texto que
rellene el propio código que pide la aprobación. Ese diseño ya falló una vez en un sistema
relacionado: un campo que declaraba quién firmaba se verificaba con la misma firma que lo emitía,
así que cualquiera podía declararse revisor humano. Una aprobación debe llevar una referencia
verificable a quien decide y una huella de qué se revisó exactamente, no la palabra del propio
proceso que la solicita. Esto no está implementado hoy; es una condición que cualquier contrato
futuro de hitl debe cumplir antes de aceptarse.
Instalación
El paquete aún no está publicado. El siguiente comando documenta la distribución prevista, no un paso que funcione hoy:
pip install asilo-core
API ejecutable: validación de esquema
from asilo.decorators import enforce_schema
from pydantic import BaseModel
class Reporte(BaseModel):
titulo: str
hallazgos: list[str]
@enforce_schema(Reporte)
def normalizar_reporte(payload: dict) -> Reporte:
return payload
CLI y Agente Cero
El diagnóstico es ejecutable y no llama red:
asilo status
asilo doctor --json
asilo init, explain y run permanecen reservados y salen con código 2, sin traceback.
Para preparar un repo, el recorrido vigente es kasai-crew scaffold --repo RUTA. Esto evita
dos implementaciones distintas del Agente 0.
Estructura
Sigue el perfil library del doc 21 de Milpa: src/ layout (el paquete no vive en la
raíz), tests/ con suite adversarial obligatoria por tratarse de un proyecto con LLM,
y docs/asilo/ con los artefactos de gobernanza del propio SDK.
Estado de implementación
Alpha parcial. Los errores, la validación de esquema y el diagnóstico existen; política,
auditoría, HITL durable y enforcement externo no. Ver docs/PLAN_IMPLEMENTACION.md para
puertas y criterios de release. No usar este repo para proteger operaciones reales.
Licencia
Apache-2.0 — texto completo en LICENSE.
La marca ASILO no se licencia con el código (sección 6 de Apache-2.0); ver NOTICE.
Release files for asilo-core 0.1.0a1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| asilo_core-0.1.0a1.tar.gz | 86.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| asilo_core-0.1.0a1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 102.5 kB
Release files / asilo_core-0.1.0a1.tar.gz
| Download URL | asilo_core-0.1.0a1.tar.gz |
|---|---|
| Size | 86.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d10b4fbf65124a40201f66b62972a9d3f818df20a12d7b46c56b09004dd00a87
|
|
BLAKE2b-256 checksum How to use checksums |
c6f76ec7a023435658dce39640b9fe5698612835bacc246ded5ffc3a440d5051
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.5
|
Release files / asilo_core-0.1.0a1-py3-none-any.whl
| Download URL | asilo_core-0.1.0a1-py3-none-any.whl |
|---|---|
| Size | 16.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c6d178ff0f630c752deb93ac4cdcab973daa519937bec0ee7e175caa732ad516
|
|
BLAKE2b-256 checksum How to use checksums |
3403f43fff17946336ddbb619f590bdd1d5ffe635232c1f1fe2e3fd0f7822397
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.5
|