アーキテクチャ

┌─────────────────────────────────────────────────────────┐
│                   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・コンテナ環境向け、環境変数から読み取り
  • bitwardenbw CLI(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> で切り替え。