Skip to content

API Key Proxy Vault (Ephemeral Secret Lease System)

Status: in_progress | Score: 65% | Última actualización: 2026-06-29

Xavier actΓΊa como proxy de confianza para API keys de terceros (LLM providers, servicios externos). Las claves se almacenan cifradas en el sistema, y cuando un agente necesita una, Xavier le presta una API key efΓ­mera con TTL que se revoca automΓ‘ticamente al finalizar la tarea o expirar su tiempo de vida. Esto previene:

  • Robo/exfiltraciΓ³n: Si un agente es comprometido, su lease expira automΓ‘ticamente
  • Uso no autorizado: Las keys nunca se exponen directamente; van inyectadas en el proxy HTTP
  • AuditorΓ­a total: Cada lend, revoke y uso queda registrado
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ HardwareVault β”‚ (keyring/DPAPI)
β”‚ (cifrado por SO) β”‚
β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ KeyLendingEngine β”‚ ←── KeyLeaseManager (nuevo)
β”‚ leases + TTL β”‚
β””β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜
β”‚ β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Agent β”‚ β”‚ ProxyUseCase β”‚
β”‚ (Jules, etc) β”‚ β”‚ (secret injection) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Componente % Notas
HardwareVault (keyring) 100% DPAPI/Keychain funcional
LocalSecretsVault (AES-256-GCM) 100% Cifrado en disco con MasterKeyManager
SecretStore trait 100% AbstracciΓ³n backend lista
EphemeralLease struct 100% UUID + TTL + agente
KeyLendingEngine (coordination) 100% lend/revoke/list/cleanup_expired
SecretInjectionStrategy 100% Bearer, X-API-Key, GitHubToken
GenericProxyRequest.lease_token 100% InyecciΓ³n en proxy
AuditLogger (QmdAuditLogger) 100% Logging SQLite de operaciones
CLI xavier secrets 100% lend, list-leases, revoke, status
CLI xavier vault 100% set, get, delete
ModelProviderConfig (env/fallback vault) 100% Lee de vault si env var no existe
Secret injection en proxy_use_case 100% Lease token resuelve e inyecta key
Anomaly scanner 30% Existe scanner pero no conectado a leases
UI panel 30% SecurityConfigPanel para API Tokens (parcial)
Componente % Gap
ModelProviderClient β†’ lease 30% Lee de env/vault directamente, NO usa KeyLendingEngine
Auto-revoke on task complete 10% No hay hook on_task_complete que revoque leases
Rate limit tracking β†’ lease 40% RateLimitManager existe pero no integrado con leases
OpenBao/SecretStore 20% Existe stub de OpenBao pero no implementado
Componente % DescripciΓ³n
KeyLeaseManager (wrapper agente) 0% Capa que intercepta ModelProviderClient.generate_text() β†’ solicita lease
Agent lifecycle hooks 0% on_task_start() β†’ lend, on_task_complete() β†’ revoke
Anti-exfiltraciΓ³n detector 0% Detecta si una API key se usa fuera del proxy
Dashboard UI leases 0% Panel admin con leases activos, revoke button, histΓ³rico
MCP tool secret resolution 0% MCP tools no usan el sistema de leases

Ver issues correspondientes:

  • #F1: KeyLeaseManager β€” wrapper que intercepta ModelProviderClient
  • #F2: Agent Lifecycle Hooks β€” on_task_start/complete
  • #F3: Leak Detector β€” anti-exfiltraciΓ³n
  • #F4: Dashboard UI β€” Leases activos + histΓ³rico
  • #F5: MCP Secret Resolution β€” leases para MCP tools
  • #F6: OpenBao backend implementaciΓ³n real
  • #F7: z.ai / opencode provider (GLM + OpenCode CLI)
Provider API Base Status
OpenAI api.openai.com/v1 βœ…
Anthropic api.anthropic.com/v1 βœ…
DeepSeek api.deepseek.com/v1 βœ…
Groq api.groq.com/openai/v1 βœ…
MiniMax api.minimax.chat/v1 βœ…
Gemini generativelanguage.googleapis.com βœ…
z.ai (GLM) api.z.ai/v1 ❌ NUEVO
OpenCode CLI N/A (CLI call) ❌ NUEVO

Enable AES-256-GCM encryption in your .env configuration:

Terminal window
# Enable secure storage encryption at rest
XAVIER_ENCRYPTION_KEY="argon2-derived-base64-or-raw-32byte-hex-string"
XAVIER_JWT_SECRET="secure-jwt-signing-secret"

When active, database entries are transparently encrypted prior to persistence, ensuring data safety even in untrusted runtime environments.