Skip to main content
Glama

brokre — AIセーフな資格情報ブローカー

English | 简体中文

brokre は、AIエージェントと人間のためのローカル資格情報ブローカーです。Cursor、Claude Code、Kimi Code、Trae、OpenClaw、Hermes Agent、ChatClaw、その他のMCP対応クライアントで使用して、ssh、mysql、psql などを実行できます — パスワードがAIコンテキスト、環境変数、ps 出力に入ることはありません。PATH 上の任意のCLI(SSHやMySQLだけでなく)をラップし、保存されたパスワードをプロンプトで注入します — 平文をAIプロセス、シェル履歴、プロセス環境に公開することなく。

開発: Techinone (成都同创合一科技有限公司)。

0.2.17の新機能

0.2.17 は現在のリリースです: デフォルトでSessionRelayルーティングSSH、マルチホップ踏み台ルート、デフォルトでローカルのみのリスト、そして既存のワンコマンドnpmインストール / 自動MCP登録 / 自動バイナリアップグレードフロー。

npm — インストール、自動更新、自動MCPセットアップ

npm install -g brokre          # or: npx -y brokre@latest

機能

動作

自動MCP登録

postinstall は brokre-setup-mcp を実行します — インストール済みのIDEのみを検出し、npx -y brokre@latest を各グローバルMCP設定にマージします。再実行: brokre mcp setup または npx brokre-setup-mcp。スキップ: BROKRE_MCP_SKIP_SETUP=1。

自動バイナリアップグレード

各MCP起動時に、npmパッケージのバージョンを PATH / ~/.brokre/bin/brokre と比較し、存在しないか古い場合は一致する GitHub Release をダウンロードします。

npmなしのCLI

install.shユーザー向けの brokre version / brokre upgrade。IDEインストール後にMCPを登録するには brokre mcp setup。

対応IDE

Cursor、VS Code、VS Code Insiders、Claude Code、Claude Desktop、Trae、Kimi Code、Windsurf、OpenClaw — packages/brokre-mcp/README.md を参照。

推奨MCP設定(自動セットアップでも適用されます):

{ "command": "npx", "args": ["-y", "brokre@latest"] }

踏み台ブローカー — クラスタ管理

踏み台レイヤーにより、AIエージェントは1つのジャンプボックスの背後にある多数のホストを、ボールトのパスワードをコンテキストにコピーしたり、ラップトップにシークレットを散らしたりすることなく操作できます。

利点

実際の意味

単一コントロールプレーン

踏み台SSHエイリアス(b150)を登録し、リモートのbrokreから内部エイリアスを同期し、brokre list / MCP brokre_list からクラスタ全体を操作します

スマートルーティング

b150::db、b150::app-01、マルチホップ b1::b2::inner — ルート区切りは ::。ルーティングされたSSHはデフォルトでSessionRelayを使用します

シークレットは踏み台に留まる

ルーティングされた実行はジャンプホスト上で ~/.brokre/bin/brokre を実行します。ラップトップはメタデータとセッションゲートを保持し、内部ホストのパスワードは保持しません

人間のゲート、エージェントフレンドリー

踏み台のアウトバウンドにはロック解除が必要です(TTY、/bastion-auth、またはMCP URLの引き出し)。ゲート認証は管理UIのアイドル期限を超えて存続するため、長時間のMCP実行は機能し続けます

クラスタ安全なデフォルト

デフォルトでローカルのみのリスト。明示的な踏み台ディスカバリ。msタイムアウトと同時実行制限付きの到達可能性プローブ。ループ検出と監査 route/bastion フィールド

ルート経由の特権操作

brokre_exec_elevated と sudo/sudo -i パスは、セッション再利用とPTY強化を備えた踏み台経由で動作します

1つのエントリホストの背後にあるK8s / DB / バッチクラスタの典型的なフロー:

brokre bastion enable b150
brokre bastion sync b150 --json          # pull inner alias catalog
brokre bastion unlock
brokre list --include-bastions --json    # b150::db, b150::worker-01, …
brokre ssh b150::db systemctl status   # MCP: brokre_exec with routed alias

MCP相当:

{ "binary": "ssh", "args": ["b150::db", "uname", "-a"] }

ゲートポリシー(デフォルト vs 厳格) — 以下の 踏み台ゲートポリシー を参照してください。ゲートは brokre bastion set-key まで非アクティブです。その後、デフォルトは踏み台アウトバウンドパスのみをロック解除します。厳格は、踏み台ディスカバリが要求されない限り、リストがローカルのみのままである間、すべての実行にロック解除を要求します。

セットアップの詳細については、以下の クロスネットワークリスト継承 と 踏み台プロキシ を参照してください。

Related MCP server: agent-vault

CLIセキュリティ(コア)

brokreは1つのルールに基づいています: シークレットはAIの手の届かない場所、および観測可能なプロセス状態の外に留まります。

レイヤー

brokreの動作

env / ps 漏洩なし

注入はPTYプロンプトベースです — パスワードは -p、SSHPASS、MYSQL_PWD、またはエクスポートされた環境変数を介して渡されることはありません

親は平文を保持しない (Unix)

保存されたパスワードは、短命の brokre --internal-injector 子プロセスで復号化され、PTYに一度書き込まれた後、子プロセスは終了します

AIは reveal できない

brokre reveal には実際のTTYとマスターパスフレーズが必要です。Web UIでは利用できず、MCP経由では公開されません

保存時のボールト

フィールドごとのAES-256-GCM。DEKはOSキーリング(Linux)または ~/.brokre/.master_kek(macOS)でラップされ、オプションのArgon2idリビールパスフレーズが付きます

監査

~/.brokre/audit/audit.log のHMACチェーンJSONL。brokre audit list は履歴を照会します(メタデータのみ)。brokre audit verify は改ざんを検出します

MCP境界

MCPはメタデータ(brokre_list)、実行(brokre_exec、brokre_exec_elevated)、brokre_setup、読み取り専用監査(brokre_audit_list、brokre_audit_verify)を公開します — パスワード、セッショントークン、reveal はありません

管理UI

127.0.0.1 のみにバインド。パスワードは書き込み専用。履歴用の監査ログタブ。セッショントークンはターミナルに印刷され、AIに返されることはありません

OS強化

コアダンプ無効、ptraceチェック(Linux)、オプションの mlockall — docs/HARDENING.md を参照

完全な脅威モデル: SECURITY.md、THREAT_MODEL.md。

PATH 上の任意のCLI(設計上ジェネリック)

brokreはデータベース/SSHラッパーの固定リストではありません。コアモデルは次のとおりです:

brokre <any-cli-on-PATH> [args...]

最初の接続: そのまま実行し、プロンプトで入力したパスワードをキャプチャし、エイリアスとして保存することを提案します。
次回: brokre <cli> <alias> … が自動注入します — AIとスクリプトはエイリアス名のみを認識します。

プリセットプロンプトパターンは一般的なツール(ssh、mysql、psql、redis-cli、ftp、clickhouse、git、docker、kubectl、sudo、…)に同梱されています。その他すべては汎用の password: / passphrase: マッチャーを使用します — コード変更は不要です。

brokre gsql prod-cluster -c "SELECT 1"    # any proprietary CLI on PATH
brokre kubectl get pods                   # if your cluster CLI prompts for a password
brokre my-internal-tool --host db.internal

必要に応じてカスタマイズ:

  • ~/.brokre/prompts.toml — バイナリごとのプロンプト正規表現オーバーライド

  • ~/.brokre/manage.toml — 管理UIのカスタムセクション(例: GaussDB、内部ツール)

組み込みの管理UIタブ(バイナリがインストールされている場合)には、SSH、FTP、MySQL、PostgreSQL、Redis、ClickHouse、MinIOが含まれます — 利便性のためだけです。PTYラッパーは任意のCLIで動作します。

インストール(MCP優先 — AIに推奨)

npmパッケージ brokre は、Cursor、Claude Code、Kimi Code、Trae、OpenClaw、Windsurf、VS Code、その他のMCPクライアント向けに、stdio経由でローカルの brokre mcp サーバーを起動します。

インストールパスの選択

パス

最適な用途

インストール

IDEでのMCP

CLIアップグレード

npm (推奨)

AIユーザー。ワンコマンドを希望

npm install -g brokre

インストール時に自動(postinstall)

npm + 各MCP起動時の自動ダウンロード

install.sh / Homebrew

本番環境。日常使用にNode不要

curl … | bash または brew install brokre

IDEインストール後に brokre mcp setup を実行

brokre version / brokre upgrade

手動MCP JSON

カスタムレイアウトのみ

CLIまたはnpmが既に存在

IDE設定を手動で編集

CLIのインストール方法に依存

推奨MCPエントリ(自動セットアップもこれを書き込みます):

{ "command": "npx", "args": ["-y", "brokre@latest"] }

Node不要 — MCPをネイティブバイナリに向けます: { "command": "brokre", "args": ["mcp"] }。

パスA — npmワンライナー(0.2.8+)

npm install -g brokre
# or without global install:
npx -y brokre@latest

npm install 時に、3つのことが自動的に行われます:

  1. MCPランチャー — brokre-mcp / npx -y brokre@latest が brokre mcp を起動します。

  2. IDE自動登録 — postinstall が brokre-setup-mcp を実行します: インストール済みのIDEのみを検出し(アプリ、CLI、実際の使用アーティファクト — 空のフォルダは除く)、上記のMCPエントリを各グローバル設定にマージします。冪等です。他のMCPサーバーを保持します。

  3. バイナリ自動アップグレード — 各MCP起動時に、PATH または ~/.brokre/bin/brokre がnpmパッケージより古い場合、一致する GitHub Release がダウンロードされます。

自動セットアップが対応するIDE

IDE

グローバル設定

Cursor

~/.cursor/mcp.json

VS Code / Insiders

…/Code/User/mcp.json

Claude Code

~/.claude.json

Claude Desktop

…/Claude/claude_desktop_config.json

Trae

…/Trae/User/mcp.json

Kimi Code

~/.kimi-code/mcp.json

Windsurf

~/.codeium/windsurf/mcp_config.json

OpenClaw

~/.openclaw/openclaw.json (mcp.servers)

再登録(例: Cursorより先にbrokreをインストールし、後でCursorをインストールした場合):

brokre mcp setup              # via CLI — same logic as postinstall
npx brokre-setup-mcp          # via npm
brokre mcp setup --dry-run    # preview only
brokre mcp setup --force      # overwrite existing brokre entry

npm install で自動登録をスキップ: BROKRE_MCP_SKIP_SETUP=1。バイナリの自動ダウンロードを無効化: BROKRE_SKIP_AUTO_INSTALL=1。バイナリを固定: BROKRE_BIN=/path/to/brokre。

npmパスには Node.js 18+ が必要です。

パスB — ネイティブCLI(install.sh / Homebrew、npm不要)

curl -fsSL https://raw.githubusercontent.com/Furowu/brokre/main/install.sh | bash
brew tap Furowu/brokre
brew install brokre

バージョンとアップグレード(CLIに組み込み — npm不要):

brokre version                # version, binary path, install type
brokre version --check        # compare with latest GitHub release
brokre version --check --json
brokre upgrade                # download latest release (curl + tar)
brokre upgrade --check        # exit 1 if an update is available
brokre upgrade 0.2.10         # install a specific version
brokre upgrade --force        # reinstall even when up to date

install.sh を再実行すると、新しいリリースが存在する場合にアップグレードされます。

CLIインストール後にMCPを登録(セットアップスクリプトにはNodeが必要、またはnpxフォールバック):

brokre mcp setup

IDEごとの手動セットアップ(任意)

自動セットアップをスキップした場合、またはプロジェクトスコープの設定が必要な場合のみ使用します。

Cursor — ワンクリックインストール、または~/.cursor/mcp.json:

{
  "mcpServers": {
    "brokre": { "command": "npx", "args": ["-y", "brokre@latest"] }
  }
}

Claude Code — ユーザースコープは~/.claude.jsonまたはclaude mcp add --scope user brokre -- npx -y brokre@latest。プロジェクトスコープは"type": "stdio"を含む.mcp.json。

その他のクライアントと環境変数: packages/brokre-mcp/README.md。MCP Registry ID: io.github.Furuwu/brokre。

MCPツールと使用方法

MCPツール

目的

brokre_list

デフォルトでは保存済みのローカルエイリアスを表示。include_bastions=trueを設定するとルーティングエイリアス(b150::db)を検出します(バスティオンのロック解除が必要な場合があります)。access/availability/bastion_gateを含みます

brokre_exec

保存済みの任意のCLIエイリアス(binary + args)を実行。sshはリモートスクリプト用のshell_commandをサポート。ssh + sudo/suは昇格セッションを自動再利用

brokre_exec_elevated

リモート特権コマンド(alias、command、mode)。デフォルトはsession=reuse(アイドルタイムアウト10分)

brokre_setup

人間が認証情報を追加するための管理UIをブラウザで開く

brokre_audit_list

監査履歴を照会(メタデータのみ — 引数は編集済み)

brokre_audit_verify

改ざん防止監査ログチェーンを検証

brokre_bastion_policy

バスティオンゲートモード(default / strict)を読み取りまたは設定。key_set、unlockedを返します

MCPとCLIの比較(AIエージェントに必須)

brokreはssh / mysqlの代替品ではありません — ボールト注入にはbrokreを前置する必要があります。

タスク

MCP(IDE内)

CLI(ターミナル / デバッグ)

エイリアスの一覧表示

brokre_list

brokre list --json

SSHリモートコマンド

brokre_exec binary=ssh, args=["prod","uname","-a"]

brokre ssh prod uname -a

任意のCLI

brokre_exec binary=mysql, args=["prod-db","-e","SHOW TABLES"]

brokre mysql prod-db -e "SHOW TABLES"

リモートスクリプトの作成

shell_command="…"(sshのみ)

brokre ssh prod sh -c '…'(スクリプト全体を1つの-c引数として)

特権実行

brokre_exec_elevated command="…"

brokre ssh prod sudo …(MCPはセッションプールを使用。CLIは毎回新しいPTYを使用)

認証情報の追加

brokre_setup(ブラウザを開く)

brokre manage --open

初回保存

利用不可(人間のTTYが必要)

brokre ssh user@10.0.0.1

よくある間違い(AIエージェント)

誤り

正しい方法

ssh prod uptime

brokre ssh prod uptime

MCP args=["prod","uname -a"](単一のシェル文字列)

args=["prod","uname","-a"](argvトークン)

MCP args=["prod","sh -c 'echo hi'"]

shell_command="echo hi"またはargs=["prod","sh","-c","echo hi"]

素のmysql -h … -p

brokre mysql <saved-alias> …

リモートSSHの場合、エイリアス以降のトークンはargvスライスであり、単一のシェルコマンドではありません。単純なコマンドには分割トークンを使用し、複雑なスクリプトにはshell_commandを使用してください。

MCP昇格セッション(sudo / su、Unix)

デフォルトでは、brokre mcpは(alias, mode, user)ごとにバックグラウンドの昇格シェルを再利用するため、sudoパスワードが呼び出しのたびに再入力されることはありません。

brokre_exec_elevated(権限昇格に推奨):

{
  "alias": "prod",
  "command": "systemctl status nginx",
  "mode": "sudo_login",
  "session": "reuse"
}

フィールド

説明

mode

sudo、sudo_login(またはsudo-i)、su

session

reuse(デフォルト)、new(古いセッションを閉じて新しいセッションを開く)、close(セッションを終了。command: ""を渡す)

user

suモードのみ。デフォルトはroot

セッションプールが有効な場合、レスポンスにはexit_code / stdout / stderrに加えてsession_reusedとsession_idle_expires_atが含まれます。session_idle_expires_atは固定の有効期限タイムスタンプではなく、呼び出しのたびに更新されるローリングアイドルウィンドウのヒントです。プールパスではstderrは通常空です。stdoutはリモートコマンドの出力のみ — TTYエコー、__BROKRE_*フレーミング、シェルプロンプトは除去されます。

brokre_exec: args内のsudo/suを含むbinary=sshは同じプールを自動使用します(常にreuse。session=new|closeは不可)。例: args=["prod","sudo","whoami"]。

リモートスクリプト/ファイルの作成(shell_command、binary=sshのみ): argsにはエイリアスのみを渡し、完全なシェルスクリプトはshell_commandに置きます(brokreがsh -cに正規化します)。argsにsh -c '...'を埋め込んだり、printf/リダイレクトをargvトークンに分割したりしないでください。特権システムパスにはbrokre_exec_elevated.commandを使用してください。

{
  "binary": "ssh",
  "args": ["prod"],
  "shell_command": "cat > /tmp/deploy.sh <<'EOF'\n#!/bin/sh\necho ok\nEOF"
}

バスティオンルートも同様に機能します: args=["b150::db"]にshell_commandをリモートスクリプトとして指定します。

SessionRelayトンネル(デフォルト)

brokre ssh b150::dbはデフォルトでSessionRelayパスを使用します: ラップトップがSSH経由でb150上にbrokre tunnel agent --stdioを起動し、エージェントがバスティオン上でbrokre ssh dbを実行します。マルチホップルートはエージェントごとに1ホップずつ剥がします(b1::b2::dbはb1で開始し、b1がb2::dbで継続)。内部の認証情報はバスティオンのボールトに留まり、ラップトップはターミナルのバイトを中継するだけです。BROKRE_TUNNEL=0は緊急ロールバック用の一時的なレガシー回避策です。

brokre tunnel doctor b150
brokre ssh b150::db uname -a

ルーティングSSHのMCP brokre_execレスポンスにはtunnel: { mode, active }が含まれます。TcpForward、エンドポイント同期、Manage UIのトンネルコントロール、永続的なtunneldは後のフェーズです。

制御

デフォルト

アイドル破棄

10分

最大有効期間

30分

コマンドごとのタイムアウト

120秒

変数

デフォルト

意味

BROKRE_MCP_SESSION

1

0はプールを無効化。ワンショットのサブプロセス実行にフォールバック

BROKRE_MCP_SESSION_IDLE_SECS

600

アイドルタイムアウト(秒)

BROKRE_MCP_SESSION_MAX_SECS

1800

最大セッション有効期間(秒)

BROKRE_MCP_SESSION_CMD_TIMEOUT

120

リモートコマンドのタイムアウト(秒)

非対応: コマンドなしの対話型sudo -i、vim/top、またはボールトのpasswordフィールドと異なるsudoパスワード。THREAT_MODEL.md T12を参照。

空のボールトでの初回接続時、brokreはブラウザでmanageを開きます(http://127.0.0.1:56777/?t=…)。セッショントークンはlocalhostに留まり、AIに返されることはありません。自動オープンを無効にするにはBROKRE_MCP_NO_AUTO_OPEN=1を設定します。

| MCPツール | 目的 |

認証情報の追加

CLIインストール後、初回実行時にマネージャーが開きます(brokre manage --onboard --open)。またはいつでも:

brokre manage --open

または最初の対話型接続時に保存(任意のCLI):

brokre ssh root@10.0.0.1
brokre my-tool --host internal.corp

使用(AIセーフ)

brokre mysql prod-db -e "SHOW TABLES"
brokre ssh prod-bastion uname -a
brokre <your-cli> <alias> [args...]

メタデータの一覧表示(AI / スクリプトに安全)

brokre list --json              # local aliases with reachability status (default probe)
brokre list --no-probe --json   # metadata only, skip TCP/SSH probes
brokre list --reachable-only    # hide unavailable aliases
brokre list --all --json        # compat: show all (same as default unless --reachable-only)
brokre list --no-bastion-discovery   # local only — no bastion SSH discovery

バスティオンが登録されている場合、brokre listはデフォルトでローカルのみに留まり、バスティオンへのSSHやバスティオンのロック解除をトリガーしません。b150::dbなどのルーティングエイリアスが実際に必要な場合はbrokre list --include-bastions(MCP: include_bastions=true)を使用してください。そのリモート検出にはロック解除が必要な場合があります。

OpenSSHセッションはデフォルトでConnectTimeout=5を注入します(BROKRE_SSH_CONNECT_TIMEOUT)。-o ConnectTimeout=Nまたは環境変数で上書きできます。バスティオンRPC(brokre list --include-bastions / リモートリスト)は60秒でタイムアウトします(BROKRE_BASTION_RPC_TIMEOUT)。リモートコマンドはControlPath=noneを使用するため、ControlPersist muxマスターに接続しません。

クロスネットワークリスト継承(バスティオンブローカー)

クロスネットワークアクセス(出張、VPN、パブリックエントリポイント)向け — 直接のLANエイリアスがローカルから到達不能だが、brokreを実行するバスティオン経由では到達可能な場合。

前提条件

  1. ラップトップ: brokre bastion enable b150(b150は保存済みのSSHエイリアス)

  2. バスティオンホストが~/.brokre/bin/brokre(標準インストール / npxパス)でbrokreを実行し、内部エイリアスが保存されている(例: db)

ルーティングリスト

brokre bastion unlock            # if bastion key is set
brokre list --include-bastions   # includes b150::db (route=b150, access=via_b150)

クロスネットワーク時、ルーティングエイリアスが必要な場合は--include-bastionsを使用します。通常のbrokre listはローカルのみに留まり、バスティオンのロック解除やSSHは行いません。

実行

brokre ssh b150::db uname -a
# MCP: brokre_exec binary=ssh, args=["b150::db", "uname", "-a"]

両方のパスが機能する場合、リストにはdb(direct)とb150::db(via_b150)の両方が表示されます — accessで区別します。

バスティオンプロキシ(クロスネットワーク / イントラネットエントリ)

リモートホストがbrokreを実行している任意の保存済みSSHエイリアスをバスティオンブローカーに昇格させます。シークレットはバスティオンに留まり、ラップトップはメタデータをキャッシュし、SSHパススルーで実行します。

brokre bastion enable b150        # register ssh alias b150 as bastion
brokre bastion set-key              # set bastion unlock key (TTY)
brokre bastion unlock               # unlock outbound session (TTL, 30 min idle default)
brokre list --include-bastions --json # discover bastion-routed aliases
brokre ssh b150::db uname -a        # routed exec via b150 remote brokre
brokre bastion sync b150 --json     # fetch alias list from one bastion
  • ルート区切り文字 ::(:はエイリアス名に使用不可): db(ローカル)、b150::db(バスティオン経由)、b1::b2::inner(マルチホップ、デフォルト深度≤2)。

  • リモートbrokre: ルーティング実行はバスティオン上で~/.brokre/bin/brokreを呼び出します(ヘッドレスLinux用にBROKRE_SOFT_MEMLOCK=1、BROKRE_ALLOW_FILE_KEYCHAIN=1、BROKRE_ROUTED_INNER=1付き)。対話型コマンド(例: sudo -i)には自動的に-ttが付与されます。

  • ガードレール: プローブの同時実行上限、msタイムアウト、短いキャッシュ、ループ検出、route/bastionの監査(HMAC v4)。

  • Manage UI: brokre manageのBastionタブ — バスティオンの登録/無効化、Webでのキー設定とロック解除/ロック、strictモードの切り替え、リモートエイリアスの同期。非TTYでも/bastion-authが自動的に開きます。監査タブはbastion/sourceでフィルタリングし、ルートフィールドを表示します。

バスティオンゲートポリシー(default vs strict)

バスティオンゲートは、機密操作の前に行う人間によるロック解除ステップです。バスティオンキーを設定するまでオフです(brokre bastion set-key)。キーが存在すると、ロック解除によりローカルTTLセッションが確立されます(brokre bastion unlock、TTYパスフレーズ、管理UI /bastion-auth、またはMCPブラウザの聞き出し)。

ポリシーは~/.brokre/bastion/policy.jsonに保存されます(strict_mode、デフォルトはfalse)。

モード

gate_mode

ロック解除が必要な場合(キーが設定されている必要あり)

デフォルト

default

バスティオンアウトバウンドのみ — b150::innerルーティングexec。登録済みバスティオンエイリアスへのSSH/scp/sftp。バスティオンディスカバリがバスティオンにSSHする際のbrokre list / brokre_list。純粋にローカルなexec(例: brokre ssh lan-db)はロック解除を必要としません。

厳格

strict

すべての brokre exec / MCP brokre_exec。メタデータのみのbrokre listはローカルのみに留まりますが、--include-bastionsは依然としてロック解除が必要です。バスティオンキーが設定されている間に、エージェント実行に人間の介入を求める場合に使用します。

例(デフォルトモード、キー設定済み、セッションロック中)

操作

ロック解除が必要か?

brokre ssh prod uname -a(ローカルエイリアス)

いいえ

brokre ssh b150::db uname -a

はい

brokre ssh b150 uptime(登録済みバスティオン)

はい

brokre list --include-bastions

はい

brokre list(ローカルのみ)

いいえ

厳格モードでは、exec行はロック解除が必要です。メタデータのみのbrokre listはローカルのみに留まり、--include-bastionsが使用されない限りロック解除されません。

ゲートモードの設定

brokre bastion strict status    # default | strict
brokre bastion strict on        # strict — all exec gated; list stays local-only unless discovery is requested
brokre bastion strict off       # default — bastion outbound only

サーフェス

方法

CLI

brokre bastion strict on|off|status

管理UI

バスティオンタブ — 厳格モードトグル

MCP

brokre_bastion_policy — 現在のポリシーを読み取るか、{"strict_mode": true} / falseを渡す

MCP読み取りレスポンスにはstrict_mode、gate_mode、key_set、unlockedが含まれます。リスト/execレスポンスにはbastion_gate(required、unlocked_during_call、idle_expires_at)が含まれます。

ロック解除セッションTTL(デフォルト): アイドル30分(BROKRE_BASTION_IDLE_SECS)、最大有効期間8時間(BROKRE_BASTION_MAX_SECS)。アイドルウィンドウは、ロック解除中にゲートされた呼び出しのたびに更新されます(CLI、MCP、管理UI間で~/.brokre/run/bastion_session.jsonを介して共有)。バスティオンゲート認証は、管理UIセッションのアイドル期限とは独立しています。MCPロック解除時のブラウザ自動オープンを無効化: BROKRE_BASTION_NO_AUTO_OPEN=1。

表示 / 削除(人間のみ、実TTY)

brokre reveal mysql prod-db --field password
brokre rm ssh prod-bastion

監査ログ(メタデータのみ)

brokre audit list --profile ssh --action exec --json
brokre audit verify --json

イベントは~/.brokre/audit/audit.log(HMACチェーン)に保存されます。コマンド引数は一律<REDACTED>としてマスクされます。新しいイベントにはsourceフィールド(cli、mcp、またはmanage)が含まれます。管理UIの監査ログタブとMCP brokre_audit_listは同じメタデータを公開します。

管理UIのセキュリティ

  • 127.0.0.1のみ。セッショントークンはターミナルに表示

  • パスワード: 作成 / ローテーションのみ — 読み取りAPIなし

  • 削除 / ローテーションには表示パスフレーズが必要(自動保存レコードの場合はYES)

  • アイドルタイムアウト15分

アーキテクチャ

┌─────────┐     ┌──────────┐     ┌─────────────┐     ┌────────────┐
│ AI/User │────▶│ brokre CLI│────▶│ OS Keychain │────▶│ Vault File │
└─────────┘     └──────────┘     └─────────────┘     └────────────┘
                      │
                      ▼
               ┌─────────────┐
               │  PTY + inj. │──▶ any CLI on PATH (ssh, mysql, gsql, …)
               └─────────────┘
  • 二重暗号化: フィールドごとに一意のDEK。execとreveal用に別々にラップ。

  • Vaultメタデータ: profile、name、host_alias、saved_argsは暗号文の横に平文で保存(THREAT_MODEL.md T3)。

  • SSH秘密鍵: 0600一時ファイル + セッション用の-i(docs/HARDENING.md)。

プリセット管理UIグループ

バイナリがPATH上にある場合の便利なタブ:

グループ

バイナリ

SSH

ssh、scp、sftp(共有資格情報)

FTP

ftp、lftp

MySQL

mysql、mariadb

PostgreSQL

psql、postgres

Redis

redis-cli、redis

ClickHouse

clickhouse-client、clickhouse

MinIO

mc、minio

ロードマップ

現在: 汎用PTYラッパー + manage.tomlグループ + prompts.tomlオーバーライド。

計画中: ~/.brokre/profiles/配下の完全なTOMLコネクタプロファイル。ツールごとの注入戦略付き。

パイプ標準入力とOpenSSH共有

  • パイプ標準入力(tar | brokre ssh host 'tar xf -'): パイプデータは注入完了後にのみ転送されます。

  • OpenSSHファミリー(ssh、scp、sftp): ホストが一致する場合に共有保存資格情報を使用。対話的な保存が最初に必要です(TTY)。

開発

cargo test    # unit tests in src/ only (no tests/ integration suite in this repo)
cargo clippy --all-targets --all-features -- -D warnings
cargo build --release   # binary: target/release/brokre

リリースバージョンはVERSIONで宣言されています(Cargo.tomlとpackages/brokre-mcp/package.jsonにも反映)。公式バイナリとnpmパッケージはTechinOneによってGitHub ReleasesとCIを介して公開されています — このオープンソースツリーの一部ではありません。

ライセンス

MIT — LICENSEを参照。


Techinone · 成都同创合一科技有限公司

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI agents to securely access authenticated services (HTTP, SSH, SMTP) without exposing secrets, by acting as a server-side proxy that injects authentication.
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Agent Vault is a local credential vault for AI agents. It enables agents to use secrets by name without ever seeing their values, with host allowlists, output scrubbing, and audit logging.
      4
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables AI agents to securely manage local credentials, obtain short-lived tokens for authenticated API access, and audit every use by purpose.
      9
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Lets AI agents make authenticated API and OAuth calls using stored credentials they never see, with per-credential Touch ID approval, proxy execution, and a local audit log of every use.
      1
      Apache 2.0