Dvarapala
Dvarapala
Puertas de permisos + registros de auditoría a prueba de manipulaciones para agentes de IA y servidores MCP. 3 líneas para añadirlo.
Los agentes ejecutan herramientas, lanzan comandos, mueven dinero. Cuando algo sale mal necesitas responder dos preguntas: ¿debería haberse permitido? y ¿exactamente dónde falló la ejecución? Dvarapala responde ambas — antes (control de acceso) y después (auditoría) — con cero dependencias.
import dvarapala
gate = dvarapala.Gate(policy="policy.json", audit="audit.jsonl")
@gate(risk="critical")
def refund(customer_id: str, amount_cents: int):
... # nothing runs unless policy + consent approve; every decision is hash-chainedPor qué
Gate (antes): política declarativa (
allow/warn/confirm/deny), puntuación de riesgo heurística, escalera de consentimiento (once / session / always), interruptor de emergencia, limitador de frecuencia.Auditoría (durante → después): JSONL de solo adición con una cadena SHA-256 por registro. Editar o eliminar el historial rompe la verificación:
dvarapala verify audit.jsonl.Campos causales desde el primer día: cada registro lleva
run_id,step,parent_step,context_refs,alternatives_considered,state_delta— de modo que la atribución del "¿por qué hizo eso el agente?" se pueda construir encima sin volver a instrumentar nada.
Related MCP server: enterprise-agent-lab
Recorrido de 30 segundos
gate = dvarapala.Gate(
policy={
"rules": [
{"id": "reads-free", "match": {"tool": "read_*"}, "effect": "allow"},
{"id": "refunds-human","match": {"tool": "refund"}, "effect": "confirm"},
{"id": "no-drop", "match": {"keywords": ["drop table"]}, "effect": "deny"},
]
},
audit=".dvara/audit.jsonl",
)Anota dónde se produce una llamada en el bucle de tu agente:
with dvarapala.step(run_id="r1", step_no=17,
alternatives_considered=["cancel_order"]):
refund("c1", 5000) # audited with step=17, alternatives recordedLas llamadas denegadas lanzan dvarapala.Denied (un PermissionError) — captúralo y deja
que el modelo reintente con otra cosa.
Superficies
Superficie | Importación |
Decorador para cualquier función síncrona/asíncrona |
|
Middleware ASGI para endpoints HTTP de herramientas |
|
Manejadores de herramientas de servidores MCP |
|
CLI |
|
Reglas de diseño
Núcleo solo con la biblioteca estándar. Sin dependencias; las políticas YAML son un extra opcional.
Valores predeterminados seguros por denegación. Las sesiones no interactivas deniegan en lugar de solicitar confirmación; los comandos de shell desconocidos se evalúan como MEDIUM; los tokens destructivos como CRITICAL.
El registro es evidencia. La verificación de la cadena es un solo comando, no se necesita servidor.
Estado
v0.1.0 (alpha). El núcleo de Gate y auditoría es estable; los adaptadores y la
capa de atribución de fallos (why did step 24 fail because of step 6?) están en
la hoja de ruta. Licencia MIT. Las contribuciones son bienvenidas.
Instalación
pip install dvarapala # core, stdlib-only
pip install dvarapala[yaml] # + YAML policy support
pip install dvarapala[dev] # + pytest/ruffLicencia
MIT — consulta LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Runtime permission, approval, and audit layer for AI agent tool execution.
Context and control for any AI. Agent identity, scoped access, and proof across tools.
See, price, and control every tool call your AI agents make: policy checks, cost, and audit tools.
Pre-execution governance for AI agents. Deterministic PASS/FAIL/REVIEW verdicts, replayable proof.
Related MCP Servers
- AlicenseAqualityBmaintenanceLocal zero-trust permission gateway for AI agents. Enforces policy-based tool authorization, human approvals, scoped permissions, and cryptographically verifiable audit logs.4101 PyPI5Apache 2.0
- FlicenseNot gradedqualityCmaintenanceEnables controlled AI-agent access to enterprise-shaped tools with a deny-by-default gated write path, human approval, dry-run execution, and append-only audit logging.1-
- AlicenseNot gradedqualityAmaintenanceTamper-evident audit trail for AI agent tool calls. Cryptographically signed, hash-chained records that prove what your agents did.318 npmMIT
- AlicenseAqualityAmaintenanceGates every AI agent tool call against your policy before it runs, then writes a hash-chained, tamper-evident record of what was decided and what happened. Anyone can verify that record offline, without your software, your systems or any key you hold.4529 PyPI15AGPL 3.0