Haldir

Identidad, secretos y auditoría para agentes de IA. El modo proxy intercepta cada llamada de herramienta MCP.

Documentación

Haldir — La capa de protección para agentes de IA

tests codecov type-checked: mypy Smithery PyPI PyPI Downloads License: MIT Security: SECURITY.md GitHub Stars SafeSkill 89/100

La capa de gobernanza de código abierto para agentes de IA. Identidad, secretos, auditoría y aplicación de políticas — con licencia MIT, autoalojable o mediante nuestra nube.

Haldir aplica gobernanza en cada llamada de herramienta de un agente de IA: sesiones con alcance y límites de gasto, secretos cifrados que el modelo nunca ve, registro de auditoría encadenado con hash a prueba de manipulación, aprobaciones con intervención humana y un proxy que intercepta cada llamada MCP antes de que llegue a tus herramientas. SDKs nativos para LangChain, CrewAI, AutoGen y Vercel AI SDK.

Haldir quickstart: install, create a scoped session, check permission, log the action to the hash-chained audit trail

Haldir architecture: Agent → Proxy → (Gate/Vault/Watch/Policy) → Upstream APIs

CLI

$ haldir overview

  Haldir tenant overview
  acct_xyz123  ·  tier pro  ·  2026-04-19T18:42:11+00:00

  Status     ● ok
  Actions      4,217 / 50,000   ████░░░░░░░░░░░░░░░░    8.4%
  Spend      $ 47.30 this month
  Sessions        12 active  ·  3/10 agents
  Vault            8 secrets  ·  62 accesses this month
  Audit        1,847 entries  ·  0 flagged (7d)  ·  chain ✓
  Webhooks         2 registered  ·  541 deliveries (24h)  ·  99.82% success
  Approvals        1 pending

Instala una vez y gestiona toda la plataforma desde la terminal:

pip install haldir
haldir login                           # one-time; stashes API key
haldir overview --watch                # top-style live dashboard
haldir status                          # green/yellow/red component pills
haldir ready                           # exits 0/1, perfect for CI
haldir audit tail --agent my-bot       # the last N entries
haldir audit export --format=jsonl --out audit-2026-04.jsonl
haldir audit verify                    # hash chain integrity check
haldir webhooks deliveries             # last 20 retry attempts
haldir migrate up                      # apply pending schema migrations

Cada comando acepta --json para scripts. haldir --help para la superficie completa.

Dos formas de ejecutar Haldir

AutoalojadoNube (haldir.xyz)
PrecioGratis para siemprePlan gratuito + planes de pago
FuncionesTodoTodo — misma API, mismos SDKs
Tú ejecutasAPI + PostgresNada
Ideal paraIndustrias reguladas, entornos aislados, "debemos poseer los datos""Solo haz que funcione"

Autoalojamiento en 5 minutos

git clone https://github.com/ExposureGuard/haldir.git
cd haldir
cp .env.example .env
python3 -c 'import base64, os; print(base64.urlsafe_b64encode(os.urandom(32)).decode())'
# paste the output into .env as HALDIR_ENCRYPTION_KEY, then:
docker compose up -d
curl http://localhost:8000/health

Guía completa de autoalojamiento: SELF_HOSTING.md

O usa nuestra nube

pip install haldir

Eso es todo — apunta a https://haldir.xyz, sin registro, API en vivo.


Disponible ahora: haldir.xyz · Documentación de API · Especificación OpenAPI · Smithery

🧪 Aceptando 5 socios de diseño. 30 días gratis, acceso completo, línea directa con el fundador. Si estás lanzando agentes de IA a producción, escribe a sterling@haldir.xyz.

Rendimiento

Haldir es lo suficientemente rápido para estar en la ruta crítica de cada llamada de herramienta de un agente sin convertirse en el cuello de botella.

Rendimiento HTTP de un solo servidor (gunicorn 4 workers, 32 clientes concurrentes, backend SQLite optimizado, cada solicitud pasa por la pila completa de middleware — autenticación, validación, idempotencia, métricas, registro estructurado):

EndpointRPSp50p95p99
GET /healthz1,63819.1 ms32.5 ms41.6 ms
GET /v1/status1,38222.2 ms30.8 ms45.4 ms
GET /v1/sessions/:id90329.2 ms95.5 ms172.1 ms
POST /v1/sessions (crear)1,14227.7 ms35.2 ms39.9 ms
POST /v1/audit (escritura de cadena de hash)1,09228.7 ms37.6 ms52.6 ms

Hardware: Intel Core i3-1215U de 12.ª generación (8 núcleos, 8 GB de RAM). SQLite está configurado con WAL + synchronous=NORMAL + mmap de 256 MiB + almacenamiento temporal en memoria — el p99 de búsqueda de sesión bajó un 52 % frente a la ruta sin optimizar. Las implementaciones con Postgres (pool configurable mediante HALDIR_PG_POOL_MIN/MAX) reducen aún más el p99; actívalo mediante DATABASE_URL=postgresql://....

Costo de primitivas (Python puro, sin E/S):

Primitivap50Notas
Vault.store_secret (cifrado AES-256-GCM + vinculación AAD)< 10 µsen memoria, sin escritura en BD
Vault.get_secret (descifrado AES-256-GCM + verificación AAD)< 10 µsen memoria
AuditEntry.compute_hash (SHA-256 sobre carga útil canónica)< 10 µs
Gate.check_permission vía REST~50-120 msred + ida y vuelta a BD, con Cloudflare al frente
Watch.log_action vía REST~50-150 msincluye búsqueda de cadena + escritura en BD
Envoltorio completo de herramienta gobernada (verificación + registro)~100-250 ms

Los agentes normalmente esperan 500-3000 ms por una respuesta del LLM y 100-1000 ms por una llamada a API externa, por lo que la sobrecarga de Haldir queda dentro del ruido. Reproduce localmente:

# Concurrent HTTP throughput (launches a local gunicorn, ~60s total)
python bench/bench_http.py --duration 10 --concurrency 32 --workers 4

# Primitive cost only (no API key needed)
python bench/bench_primitives.py --local

# End-to-end against the hosted service
export HALDIR_API_KEY=hld_...
python bench/bench_primitives.py

Cumplimiento

Un solo endpoint genera un paquete de prueba de control listo para auditoría que cubre ocho secciones, cada una anclada a un criterio de servicio de confianza SOC2:

haldir compliance evidence --since 2026-01-01 --out evidence-q1-2026.md
#SecciónSOC2
1Identidad (tenant, suscripción, período)
2Control de acceso (claves API + alcances por clave)CC6.1
3Cifrado (AES-256-GCM, vinculación AAD)CC6.7
4Registro de auditoría (recuento de entradas, integridad de cadena de hash)CC7.2
5Gobernanza de gasto (límites por sesión, registros de pago)CC5.2
6Aprobaciones humanas (ciclo de vida de solicitud/decisión)CC8.1
7Alertas salientes (tasa de éxito de entrega de webhooks)CC7.3
8Firma de documento (auto-hash SHA-256)

El paquete se firma a sí mismo: un SHA-256 sobre el JSON canónico de las secciones 1-7. Un auditor que reciba un paquete archivado puede volver a llamar a /v1/compliance/evidence/manifest y confirmar que el resumen coincide — prueba de que el documento no fue modificado después de su emisión.

JSON para subir al almacén de evidencia, Markdown para el momento de "muestra esto al auditor", ambos desde el mismo endpoint /v1/compliance/evidence.

Por qué Haldir

Los agentes de IA están llamando APIs, gastando dinero y accediendo a credenciales sin supervisión alguna. Haldir es la capa que faltaba:

Sin HaldirCon Haldir
El agente tiene acceso ilimitadoSesiones con alcance y permisos
Secretos en variables de entorno en texto planoBóveda cifrada con AES y control de acceso
Sin límites de gastoAplicación de presupuesto por sesión
Sin registro de lo que ocurrióRegistro de auditoría inmutable
Sin supervisión humanaFlujos de aprobación con webhooks
El agente habla directamente con las herramientasEl proxy intercepta y aplica políticas

Inicio rápido

pip install haldir
from sdk.client import HaldirClient

h = HaldirClient(api_key="hld_xxx", base_url="https://haldir.xyz")

# Create a governed agent session
session = h.create_session("my-agent", scopes=["read", "spend:50"])

# Store secrets agents never see directly
h.store_secret("stripe_key", "sk_live_xxx")

# Retrieve with scope enforcement
key = h.get_secret("stripe_key", session_id=session["session_id"])

# Authorize payments against budget
h.authorize_payment(session["session_id"], 29.99)

# Every action is logged
h.log_action(session["session_id"], tool="stripe", action="charge", cost_usd=29.99)

# Revoke when done
h.revoke_session(session["session_id"])

Productos

Gate — Identidad y autenticación de agentes

Sesiones con alcance, permisos, límites de gasto y TTL. Sin sesión = sin acceso.

curl -X POST https://haldir.xyz/v1/sessions \
  -H "Authorization: Bearer hld_xxx" \
  -H "Content-Type: application/json" \
  -d '{"agent_id": "my-bot", "scopes": ["read", "browse", "spend:50"], "ttl": 3600}'

Vault — Secretos cifrados y pagos

Almacenamiento cifrado con AES. Los agentes solicitan acceso; Vault verifica el alcance de la sesión. Autorización de pagos con presupuestos por sesión.

curl -X POST https://haldir.xyz/v1/secrets \
  -H "Authorization: Bearer hld_xxx" \
  -H "Content-Type: application/json" \
  -d '{"name": "api_key", "value": "sk_live_xxx", "scope_required": "read"}'

Watch — Registro de auditoría y cumplimiento

Registro inmutable de cada acción. Detección de anomalías. Seguimiento de costos. Exportaciones de cumplimiento.

curl https://haldir.xyz/v1/audit?agent_id=my-bot \
  -H "Authorization: Bearer hld_xxx"

Proxy — Capa de aplicación

Se sitúa entre los agentes y los servidores MCP. Cada llamada de herramienta es interceptada, autorizada y registrada. Admite aplicación de políticas: listas de permitidos, listas de denegados, límites de gasto, límites de tasa, ventanas de tiempo.

# Register an upstream MCP server
curl -X POST https://haldir.xyz/v1/proxy/upstreams \
  -H "Authorization: Bearer hld_xxx" \
  -H "Content-Type: application/json" \
  -d '{"name": "myserver", "url": "https://my-mcp-server.com/mcp"}'

# Call through the proxy — governance enforced
curl -X POST https://haldir.xyz/v1/proxy/call \
  -H "Authorization: Bearer hld_xxx" \
  -H "Content-Type: application/json" \
  -d '{"tool": "scan_domain", "arguments": {"domain": "example.com"}, "session_id": "ses_xxx"}'

Approvals — Intervención humana

Pausa la ejecución del agente para revisión humana. Notificaciones por webhook. Aprueba o deniega desde el panel o la API.

# Require approval for spend over $100
curl -X POST https://haldir.xyz/v1/approvals/rules \
  -H "Authorization: Bearer hld_xxx" \
  -H "Content-Type: application/json" \
  -d '{"type": "spend_over", "threshold": 100}'

Servidor MCP

Haldir está disponible como servidor MCP con 10 herramientas para Claude, Cursor, Windsurf y cualquier IA compatible con MCP:

{
  "mcpServers": {
    "haldir": {
      "command": "haldir-mcp",
      "env": {
        "HALDIR_API_KEY": "hld_xxx"
      }
    }
  }
}

Herramientas MCP: createSession, getSession, revokeSession, checkPermission, storeSecret, getSecret, authorizePayment, logAction, getAuditTrail, getSpend

Endpoint HTTP MCP: POST https://haldir.xyz/mcp

Arquitectura

Agent (Claude, GPT, Cursor, etc.)
    │
    ▼
┌─────────────────────────────┐
│       Haldir Proxy          │  ← Intercepts every tool call
│  Policy enforcement layer   │
└──────┬──────────┬───────────┘
       │          │
  ┌────▼────┐ ┌───▼────┐
  │  Gate   │ │ Watch  │
  │identity │ │ audit  │
  │sessions │ │ costs  │
  └────┬────┘ └────────┘
       │
  ┌────▼────┐
  │ Vault   │
  │secrets  │
  │payments │
  └────┬────┘
       │
       ▼
  Upstream MCP Servers
  (your actual tools)

Referencia de API

Documentación completa en haldir.xyz/docs

EndpointMétodoDescripción
/v1/keysPOSTCrear clave API
/v1/sessionsPOSTCrear sesión de agente
/v1/sessions/:idGETObtener información de sesión
/v1/sessions/:idDELETERevocar sesión
/v1/sessions/:id/checkPOSTVerificar permiso
/v1/secretsPOSTAlmacenar secreto
/v1/secrets/:nameGETRecuperar secreto
/v1/secretsGETListar secretos
/v1/secrets/:nameDELETEEliminar secreto
/v1/payments/authorizePOSTAutorizar pago
/v1/auditPOSTRegistrar acción
/v1/auditGETConsultar registro de auditoría
/v1/audit/spendGETResumen de gasto
/v1/approvals/rulesPOSTAgregar regla de aprobación
/v1/approvals/requestPOSTSolicitar aprobación
/v1/approvals/:idGETVerificar estado de aprobación
/v1/approvals/:id/approvePOSTAprobar
/v1/approvals/:id/denyPOSTDenegar
/v1/approvals/pendingGETListar pendientes
/v1/webhooksPOSTRegistrar webhook
/v1/webhooksGETListar webhooks
/v1/proxy/upstreamsPOSTRegistrar upstream
/v1/proxy/toolsGETListar herramientas del proxy
/v1/proxy/callPOSTLlamar a través del proxy
/v1/proxy/policiesPOSTAgregar política
/v1/usageGETEstadísticas de uso
/v1/metricsGETMétricas de plataforma

Descubrimiento de agentes

Haldir es detectable a través de todos los protocolos principales:

URLProtocolo
haldir.xyz/openapi.jsonOpenAPI 3.1
haldir.xyz/llms.txtDocumentación legible por LLM
haldir.xyz/.well-known/ai-plugin.jsonPlugins de ChatGPT
haldir.xyz/.well-known/mcp/server-card.jsonDescubrimiento MCP
haldir.xyz/mcpMCP JSON-RPC
smithery.ai/server/haldir/haldirRegistro de Smithery
pypi.org/project/haldirPyPI

Licencia

MIT

Enlaces