アーキテクチャ
┌─────────────────────────────────────────────────────────┐
│ AI Agent (Hermes / LLM) │
│ "DATABASE_URL を使って psql 実行" │
└────────────────────┬────────────────────────────────────┘
│ CLI / HTTP
▼
┌─────────────────────────────────────────────────────────┐
│ trustless CLI │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ secret │ │ run │ │ proxy │ │
│ │ (一覧/ │ │ (サブプ │ │ (HTTP │ │
│ │ 取得/ │ │ ロセス │ │ プロキ │ │
│ │ 保存) │ │ 注入) │ │ シ+ │ │
│ └────┬─────┘ └────┬─────┘ │ MITM) │ │
│ │ │ └─────┬─────┘ │
│ │ │ │ │
│ ┌────┴─────────────┴──────────────┴─────┐ │
│ │ Backend Interface │ │
│ │ (pass / env / bitwarden — 切り替え可能) │ │
│ └─────────────────────┬──────────────────┘ │
└────────────────────────┼────────────────────────────────┘
│
┌─────────────┴─────────────┐
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ pass store │ │ 対象API │
│ (GPG + pass) │ │ / サービス │
└──────────────┘ └──────────────┘
Backend 抽象化
認証情報の解決はシンプルなインターフェースで抽象化されています:
type Backend interface {
Resolve(ctx context.Context, key string) (string, error)
List(ctx context.Context) ([]Entry, error)
}
実装済みバックエンド:
pass(デフォルト)—pass show <key>をラップenv— CI/CD・コンテナ環境向け、環境変数から読み取りbitwarden—bwCLI(bw list items)をラップ。secureNote の fields[name=“value”, type=1 hidden] / login.password / notes 1行目を解決。セッションキーは BW_SESSION 環境変数のみで渡す(argv 禁止)。unlock はtrustless bw-unlock(セッションキーは~/.config/trustless/bw-sessionに 0600 で保存)。セッション無効時は fail-closed。詳細: docs/bitwarden-backend-design.md
trustless config set backend <name> で切り替え。