Deweloperzy
Jedno wywołanie CLI. Każdy sekret.
Brak zmiennych środowiskowych. Brak plików konfiguracyjnych. Brak sekretów w logach. Każdy sekret, którego potrzebuje kod, jest rozwiązywany w czasie wykonania z sejfu, którego agent AI nie może ominąć.
Wzorzec
Zapisz raz. Pobierz wszędzie.
Każdy agent AI jest inicjowany raz za pomocą własnego tokenu, zakresów i limitów żądań. Następnie agent AI może pobierać sekrety w czasie wykonania. Klucz jest przechowywany zaszyfrowany w sejfie, nigdy w zmiennych środowiskowych ani w kodzie źródłowym. Jeśli klucz ulegnie rotacji, należy zaktualizować go w interfejsie sejfu — każdy agent AI pobierze go automatycznie.
# 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
Trzy sposoby użycia
Pole, Renderuj lub Pośrednicz.
Pole
Jedna wartość. Przekieruj ją do dowolnego polecenia lub skryptu. Sekret istnieje tylko w potoku — nigdy w zmiennej, nigdy na dysku.
Renderuj
Cały plik konfiguracyjny. Rozwiąż wszystkie odwołania clavitor:// przy starcie. Szablon można bezpiecznie zapisać. Rozwiązana konfiguracja znajduje się w potoku.
Pośrednicz
Pośrednik HTTPS. Poświadczenia rozwiązywane z nagłówków w sposób przejrzysty. Agent zapisuje clavitor:// tam, gdzie powinien trafić sekret — pośrednik wstrzykuje rzeczywistą wartość. Nic w logach, nic w pamięci agenta.
Którego powinienem użyć?
| Funkcja | Field | Render | Proxy |
|---|---|---|---|
| Sekrety poza logami | |||
| Działa z każdym językiem | |||
| Działa z każdym narzędziem (curl, SDK, przeglądarka) | |||
| Zakresy i audyt na agenta | |||
| Wiele sekretów naraz | |||
| Brak konieczności zmian w kodzie | |||
| Pliki konfiguracyjne bezpieczne do zapisu | |||
| Przypadki użycia SSH / nie-HTTP |
Szybki wybór: Tworzysz skrypt lub narzędzie CLI? Użyj Pola. Wdrażasz usługę z plikiem konfiguracyjnym? Użyj Renderowania. Uruchamiasz agentów AI, którzy wykonują wywołania API? Użyj Pośredniczenia.
Dlaczego to przewyższa każdy inny pośrednik poświadczeń.
Nic do kradzieży. Pośredniki hostowane w chmurze są cennymi celami — naruszenie jednego oznacza dostęp do poświadczeń wszystkich klientów. Pośredniki lokalne przechowują poświadczenia we własnej konfiguracji, czytelnej dla każdego agenta na maszynie. Pośrednik Clavitor przechowuje tylko zaszyfrowany plik konfiguracyjny. Brak jawnych sekretów na dysku, brak magazynu poświadczeń do przeszukania.
Agenci nie mogą go otworzyć. Skompromitowany agent nie może wyodrębnić poświadczeń z pośrednika — pośrednik nie udostępnia API, nie serwuje panelu ani nie akceptuje poleceń. Odczytuje jeden nagłówek, rozwiązuje jedno odwołanie i wstrzykuje wynik do wychodzącego żądania. Brak powierzchni ataku.
Nic w logach. Agent zapisuje clavitor://Entry/field. To właśnie pojawia się w standardowym wyjściu, w logach, w historii rozmów. Rzeczywisty sekret istnieje tylko w procesie pośrednika przez czas trwania jednego wywołania HTTP. Agregatory logów, zrzuty awaryjne, artefakty CI — czysto.
Zero konfiguracji. Brak tabel routingu, mapowań API, plików poświadczeń do zarządzania. Odwołanie clavitor:// w nagłówku jest jedyną instrukcją. Jedno init, jedna zmienna środowiskowa, gotowe.
Języki
Działa w każdym języku. Nie wymaga 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;Renderowanie konfiguracji
Przechowuj konfiguracje. Nie sekrety.
clavitor-cli render skanuje dowolny plik w poszukiwaniu odwołań clavitor://entry/field, rozwiązuje każde z nich względem sejfu i wyprowadza wynik. Szablon można bezpiecznie przechowywać w dowolnym miejscu. Rozwiązana konfiguracja znajduje się w potoku. Sekrety nigdy nie dotykają dysku.
# 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"}Działa z JSON, YAML, TOML, .env lub dowolnym plikiem tekstowym. Jeśli zawiera clavitor://, zostanie rozwiązany.
Więcej przewodników integracji
Infrastruktura
Docker, Kubernetes, Terraform, Ansible, GitHub Actions, GitLab CI, SSH. Zero sekretów w konfiguracji, zero sekretów w logach.
Przewodnik po infrastrukturze →Agenci AI
Claude Code, Codex, OpenClaw, Hermes, CrewAI, LangChain. Tokeny z zakresem, ścieżki audytu, automatyczne blokowanie.
Przewodnik po agentach →Narzędzia MSP
PowerShell, Datto RMM, N-able, ConnectWise Automate. Wydawanie poświadczeń dla bazy klientów.
Przewodnik MSP →Wzorzec jest zawsze taki sam.
Jedno wywołanie CLI, dowolny kontekst. Zakres agenta określa, co może zobaczyć. Poziom określa, co może odszyfrować. Dziennik audytu rejestruje każdy dostęp.