開発者向け
1回のCLI呼び出し。すべてのシークレット。
環境変数なし。設定ファイルなし。ログにシークレットなし。コードが必要とするすべてのシークレットは、エージェントが回避できないボールトから実行時に解決されます。
パターン
1回保存して、どこからでも取得。
各エージェントは、独自のトークン、アクセス範囲、およびレート制限で1回だけ初期化されます。その後、エージェントは実行時にシークレットを取得できます。鍵はボールト内に暗号化されて保存され、環境変数やソースコードに保存されることはありません。鍵のローテーションを行う場合は、ボールトUIで更新するだけで、すべてのエージェントに自動的に反映されます。
# 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
3つの使用方法
フィールド、レンダー、またはプロキシ。
フィールド
1つの値。任意のコマンドやスクリプトにパイプで渡します。シークレットはパイプ内にのみ存在し、変数内やディスク上に保存されることはありません。
レンダー
設定ファイル全体。起動時にすべての clavitor:// 参照を解決します。テンプレートはコミットしても安全です。解決された設定はパイプ内に存在します。
プロキシ
HTTPSプロキシ。資格情報はヘッダーから透過的に解決されます。エージェントはシークレットが必要な場所に clavitor:// を記述し、プロキシが実際の値を挿入します。ログにもエージェントのメモリにも何も記録されません。
どれを使用すべきですか?
| 機能 | Field | Render | Proxy |
|---|---|---|---|
| ログからシークレットを排除 | |||
| あらゆる言語に対応 | |||
| あらゆるツールに対応(curl、SDK、ブラウザ) | |||
| エージェントごとのアクセス範囲の限定と監査 | |||
| 複数のシークレットを同時に処理 | |||
| コードの変更不要 | |||
| 設定ファイルはコミットしても安全 | |||
| SSH / 非HTTPのユースケース |
クイック選択: スクリプトやCLIツールを構築していますか?フィールドを使用してください。設定ファイルを使用してサービスをデプロイしていますか?レンダーを使用してください。API呼び出しを行うAIエージェントを実行していますか?プロキシを使用してください。
これが他のすべての資格情報プロキシに勝る理由。
盗むものはありません。 クラウドホスト型プロキシは価値の高い標的です。1つでも侵害されれば、すべての顧客の資格情報が奪われます。ローカルプロキシは独自の設定に資格情報を保存し、マシン上の任意のエージェントが読み取れます。Clavitorのプロキシが保持するのは、暗号化された設定ファイルのみです。ディスク上に平文のシークレットはなく、不正アクセスされる資格情報ストアもありません。
エージェントがこじ開けることはできません。 侵害されたエージェントがプロキシから資格情報を抽出することはできません。プロキシはAPIを公開せず、ダッシュボードを提供せず、コマンドも受け付けません。1つのヘッダーを読み取り、1つの参照を解決し、結果を送信リクエストに挿入するだけです。攻撃対象領域は存在しません。
ログに何も記録されません。 エージェントは clavitor://Entry/field を記述します。標準出力、ログ、会話履歴に表示されるのはこの文字列だけです。実際の資格情報は、1回のHTTP呼び出しの間のみプロキシプロセス内に存在します。ログアグリゲーター、クラッシュダンプ、CIアーティファクトはすべてクリーンな状態です。
設定ゼロ。 ルーティングテーブル、APIマッピング、管理する資格情報ファイルはありません。ヘッダー内の clavitor:// 参照が唯一の指示です。1回の init、1つの環境変数、これで完了です。
言語
あらゆる言語で動作します。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。設定にシークレットゼロ、ログにシークレットゼロ。
インフラストラクチャガイド →AIエージェント
Claude Code、Codex、OpenClaw、Hermes、CrewAI、LangChain。アクセス範囲を限定したトークン、監査ログ、自動ロックダウン。
エージェントガイド →パターンは常に同じです。
1回のCLI呼び出し、あらゆるコンテキスト。エージェントのアクセス範囲によって参照できるものが決まります。暗号化レベルによって復号できるものが決まります。監査ログはすべてのアクセスを記録します。