Desarrolladores
Una llamada CLI. Cada secreto.
Sin variables de entorno. Sin archivos de configuración. Sin secretos en los registros. Cada secreto que su código necesita, resuelto en tiempo de ejecución desde una bóveda que su agente no puede eludir.
El patrón
Almacénelo una vez. Recupérelo en cualquier lugar.
Cada agente se inicializa una vez con su propio token, alcances y límites de tasa. Después de eso, el agente puede obtener secretos en tiempo de ejecución. La clave se almacena cifrada en la bóveda, nunca en variables de entorno o código fuente. Si la clave rota, actualícela en la interfaz de usuario de la bóveda; cada agente la recogerá automáticamente.
# One-time setup — paste the token at the prompt, or pipe it in $ echo "$CLAVITOR_TOKEN" | clavitor-cli init # Single value — piped, never stored $ clavitor-cli get "Deploy Key" --field private_key | ssh-add - # Whole config — secrets resolved, template safe to store anywhere $ clavitor-cli render app.config.json | myapp --config - # Proxy — credentials injected at the network layer $ export HTTPS_PROXY=http://localhost:1983 $ curl -H "Authorization: Bearer clavitor://OpenRouter/key" https://openrouter.ai/api/v1/models
Tres formas de usarlo
Campo, Renderizado o Proxy.
Campo
Un valor. Envíelo a cualquier comando o script. El secreto solo existe en la tubería, nunca en una variable, nunca en disco.
Renderizado
Archivo de configuración completo. Resuelva todas las referencias clavitor:// al inicio. La plantilla es segura para confirmar. La configuración resuelta vive en una tubería.
Proxy
Proxy HTTPS. Credenciales resueltas de encabezados de forma transparente. El agente escribe clavitor:// donde debe ir el secreto; el proxy inyecta el valor real. Nada en los registros, nada en la memoria del agente.
¿Cuál debería usar?
| Función | Field | Render | Proxy |
|---|---|---|---|
| Secretos fuera de los registros | |||
| Funciona con cualquier idioma | |||
| Funciona con cualquier herramienta (curl, SDK, navegador) | |||
| Alcance y auditoría por agente | |||
| Múltiples secretos a la vez | |||
| No se necesitan cambios en el código | |||
| Archivos de configuración seguros para confirmar | |||
| Casos de uso SSH / no HTTP |
Elección rápida: ¿Está creando un script o una herramienta CLI? Use Campo. ¿Está implementando un servicio con un archivo de configuración? Use Renderizado. ¿Está ejecutando agentes de IA que realizan llamadas a la API? Use Proxy.
Por qué esto supera a cualquier otro proxy de credenciales.
Nada que robar. Los proxies alojados en la nube son objetivos de alto valor; si se viola uno, se obtienen las credenciales de todos los clientes. Los proxies locales almacenan credenciales en su propia configuración, legibles por cualquier agente en la máquina. El proxy de Clavitor solo contiene un archivo de configuración cifrado. Sin secretos en texto plano en disco, sin almacén de credenciales para asaltar.
Los agentes no pueden abrirlo. Un agente comprometido no puede extraer credenciales del proxy; el proxy no expone una API, no sirve un panel ni acepta comandos. Lee un encabezado, resuelve una referencia e inyecta el resultado en la solicitud saliente. Sin superficie de ataque.
Nada en los registros. El agente escribe clavitor://Entry/field. Eso es lo que aparece en la salida estándar, en los registros, en el historial de conversaciones. La credencial real solo existe dentro del proceso del proxy durante una llamada HTTP. Agregadores de registros, volcados de fallos, artefactos de CI, todo limpio.
Configuración cero. Sin tablas de enrutamiento, sin asignaciones de API, sin archivos de credenciales que administrar. La referencia clavitor:// en el encabezado es la única instrucción. Un init, una variable de entorno, listo.
Idiomas
Funciona en todos los idiomas. No se requiere SDK.
Bash
# The proxy handles credential injection — no secrets in the command $ export HTTPS_PROXY=http://localhost:1983 $ curl -H "Authorization: Bearer clavitor://OpenRouter API/key" \ https://openrouter.ai/api/v1/models
Go
key, _ := exec.Command("clavitor-cli", "get", "OpenRouter API", "--field", "key").Output()
client := openai.NewClient(option.WithAPIKey(strings.TrimSpace(string(key))))Python
import subprocess
# Pass directly — or use the HTTPS proxy to avoid holding the key entirely
stripe.api_key = subprocess.check_output(
["clavitor-cli", "get", "Stripe API", "--field", "key"]
).decode().strip()Rust
let key = std::process::Command::new("clavitor-cli")
.args(["get", "AWS Credentials", "--field", "secret_key"])
.output()?;
let client = aws::Client::new(String::from_utf8(key.stdout)?.trim());TypeScript / Node
import { execSync } from 'child_process';
const apiKey = execSync('clavitor-cli get "Anthropic API" --field key').toString().trim();
const client = new Anthropic({ apiKey });C# / .NET
using System.Diagnostics;
var psi = new ProcessStartInfo("clavitor-cli") { RedirectStandardOutput = true, UseShellExecute = false };
psi.ArgumentList.Add("get");
psi.ArgumentList.Add("Stripe API");
psi.ArgumentList.Add("--field");
psi.ArgumentList.Add("key");
var key = Process.Start(psi)!.StandardOutput.ReadToEnd().Trim();
var client = new StripeClient(key);PowerShell
# Single value — pipe or use directly
$key = clavitor-cli get "AWS Credentials" --field secret_key
Set-AWSCredential -AccessKey $env:AWS_ACCESS_KEY -SecretKey $key
# Or use the proxy — no secrets in the script at all
$env:HTTPS_PROXY = "http://localhost:1983"
Invoke-RestMethod -Uri "https://api.openai.com/v1/models" `
-Headers @{ Authorization = "Bearer clavitor://OpenAI/key" }Java
import java.nio.charset.StandardCharsets;
Process p = new ProcessBuilder("clavitor-cli", "get", "Stripe API", "--field", "key").start();
String key = new String(p.getInputStream().readAllBytes(), StandardCharsets.UTF_8).trim();
Stripe.apiKey = key;Renderizado de configuración
Almacene sus configuraciones. No sus secretos.
clavitor-cli render escanea cualquier archivo en busca de referencias clavitor://entry/field, resuelve cada una contra la bóveda y genera el resultado. La plantilla es segura para almacenar en cualquier lugar. La configuración resuelta vive en una tubería. Los secretos nunca tocan el disco.
# Template (safe to store anywhere)
$ cat app.config.json
{"api_key": "clavitor://OpenRouter API/key", "db": "clavitor://Prod DB/password"}
# Resolved (piped to application, never on disk)
$ clavitor-cli render app.config.json
{"api_key": "sk-or-v1-abc123...", "db": "hunter2"}Funciona con JSON, YAML, TOML, .env o cualquier archivo de texto. Si contiene clavitor://, se resuelve.
Más guías de integración
Infraestructura
Docker, Kubernetes, Terraform, Ansible, GitHub Actions, GitLab CI, SSH. Cero secretos en la configuración, cero secretos en los registros.
Guía de infraestructura →Agentes de IA
Claude Code, Codex, OpenClaw, Hermes, CrewAI, LangChain. Tokens con alcance limitado, pistas de auditoría, bloqueo automático.
Guía de agentes →Herramientas MSP
PowerShell, Datto RMM, N-able, ConnectWise Automate. Emisión de credenciales para su base de clientes.
Guía MSP →El patrón es siempre el mismo.
Una llamada CLI, cualquier contexto. El alcance del agente determina lo que puede ver. El nivel de cifrado determina lo que puede descifrar. El registro de auditoría registra cada acceso.