Войти Бесплатно навсегда Начать

Разработчикам

Один вызов CLI. Любой секрет.

Без переменных окружения. Без конфигурационных файлов. Без секретов в логах. Любой секрет, который нужен вашему коду, разрешается во время выполнения из хранилища, которое агент не может обойти.

Шаблон

Сохраните один раз. Получите доступ где угодно.

Каждый агент инициализируется один раз с собственным токеном, областями действия и ограничениями скорости. После этого агент может получать секреты во время выполнения. Ключ хранится в зашифрованном виде в хранилище, никогда не в переменных окружения или исходном коде. Если ключ ротируется, обновите его в пользовательском интерфейсе хранилища — каждый агент подхватит его автоматически.

# 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

Три способа использования

Поле, Рендер или Прокси.

Поле

Одно значение. Передайте его в любую команду или скрипт. Секрет существует только в конвейере — никогда в переменной, никогда на диске.

Рендер

Весь конфигурационный файл. Разрешите все ссылки clavitor:// при запуске. Шаблон можно безопасно закоммитить. Разрешенная конфигурация находится в конвейере.

Прокси

HTTPS-прокси. Учетные данные, разрешенные из заголовков, прозрачно. Агент записывает clavitor:// туда, где должен быть секрет — прокси вставляет реальное значение. Ничего в логах, ничего в памяти агента.

Какой мне использовать?

ВозможностьFieldRenderProxy
Секреты вне логов
Работает с любым языком
Работает с любым инструментом (curl, SDK, браузер)
Область действия и аудит для каждого агента
Несколько секретов одновременно
Изменения кода не требуются
Конфигурационные файлы безопасны для коммита
Использование SSH / не HTTP

Быстрый выбор: Создаете скрипт или CLI-инструмент? Используйте Поле. Развертываете сервис с конфигурационным файлом? Используйте Рендер. Запускаете ИИ-агентов, которые делают вызовы API? Используйте Прокси.

Почему это лучше любого другого прокси для учетных данных.

Нечего красть. Облачные прокси являются ценными целями — взломайте один, и вы получите учетные данные каждого клиента. Локальные прокси хранят учетные данные в собственной конфигурации, доступной для чтения любому агенту на машине. Прокси Clavitor содержит только зашифрованный конфигурационный файл. Никаких секретов в открытом виде на диске, никакого хранилища учетных данных для взлома.

Агенты не могут его вскрыть. Скомпрометированный агент не может извлечь учетные данные из прокси — прокси не предоставляет API, не обслуживает панель управления и не принимает команды. Он считывает один заголовок, разрешает одну ссылку и вставляет результат в исходящий запрос. Нет поверхности атаки.

Ничего в логах. Агент записывает clavitor://Entry/field. Это то, что появляется в stdout, в логах, в истории разговоров. Реальные учётные данные существуют только внутри процесса прокси в течение одного HTTP-вызова. Агрегаторы логов, дампы сбоев, артефакты CI — всё чисто.

Нулевая конфигурация. Никаких таблиц маршрутизации, никаких сопоставлений API, никаких конфигурационных файлов для управления. Ссылка clavitor:// в заголовке — единственная инструкция. Одна init, одна переменная окружения, готово.

Языки

Работает на любом языке. 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;

Рендеринг конфигурации

Храните ваши конфигурации. Не ваши секреты.

clavitor-cli render сканирует любой файл на наличие ссылок clavitor://entry/field, разрешает каждую из них относительно хранилища и выводит результат. Шаблон можно безопасно хранить где угодно. Разрешенная конфигурация находится в конвейере. Секреты никогда не касаются диска.

# 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"}

Работает с JSON, YAML, TOML, .env или любым текстовым файлом. Если он содержит clavitor://, он будет разрешен.

Больше руководств по интеграции

Инфраструктура

Docker, Kubernetes, Terraform, Ansible, GitHub Actions, GitLab CI, SSH. Ноль секретов в конфигурации, ноль секретов в логах.

Руководство по инфраструктуре →

ИИ-агенты

Claude Code, Codex, OpenClaw, Hermes, CrewAI, LangChain. Ограниченные токены, журналы аудита, автоматическая блокировка.

Руководство по агентам →

Инструменты MSP

PowerShell, Datto RMM, N-able, ConnectWise Automate. Выдача учетных данных для вашей клиентской базы.

Руководство по MSP →

Шаблон всегда один и тот же.

Один вызов CLI, любой контекст. Область действия агента определяет, что он может видеть. Уровень определяет, что он может расшифровать. Журнал аудита записывает каждый доступ.