Skip to main content
Glama

brokre — AI-sicherer Credential-Broker

English | 简体中文

brokre ist ein lokaler Credential-Broker für KI-Agenten und Menschen. Verwenden Sie ihn mit Cursor, Claude Code, Kimi Code, Trae, OpenClaw, Hermes Agent, ChatClaw und anderen MCP-fähigen Clients, um ssh, mysql, psql und mehr auszuführen — Passwörter gelangen nie in den KI-Kontext, in Umgebungsvariablen oder in die ps-Ausgabe. Es umhüllt jede CLI in Ihrem PATH — nicht nur SSH oder MySQL — und injiziert gespeicherte Passwörter an der Eingabeaufforderung, ohne Klartext dem KI-Prozess, der Shell-Historie oder der Prozessumgebung auszusetzen.

Entwickelt von Techinone (成都同创合一科技有限公司).

Neues in 0.2.17

0.2.17 ist die aktuelle Version: SessionRelay-geroutetes SSH standardmäßig, Multi-Hop-Bastion-Routen, nur lokale Liste standardmäßig und der bestehende Ein-Befehl-npm-Install / automatische MCP-Registrierung / automatisches Binary-Upgrade-Ablauf.

npm — Installieren, automatisches Update, automatisches MCP-Setup

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

Fähigkeit

Was passiert

Automatische MCP-Registrierung

postinstall führt brokre-setup-mcp aus — erkennt nur installierte IDEs und fügt npx -y brokre@latest in jede globale MCP-Konfiguration ein. Erneut ausführen: brokre mcp setup oder npx brokre-setup-mcp. Überspringen: BROKRE_MCP_SKIP_SETUP=1.

Automatisches Binary-Upgrade

Bei jedem MCP-Start vergleicht es die npm-Paketversion mit PATH / ~/.brokre/bin/brokre; lädt das passende GitHub Release herunter, wenn es fehlt oder älter ist.

CLI ohne npm

brokre version / brokre upgrade für install.sh-Benutzer; brokre mcp setup zur MCP-Registrierung nach der IDE-Installation.

Unterstützte IDEs

Cursor, VS Code, VS Code Insiders, Claude Code, Claude Desktop, Trae, Kimi Code, Windsurf, OpenClaw — siehe packages/brokre-mcp/README.md.

Empfohlene MCP-Konfiguration (auch vom Auto-Setup angewendet):

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

Bastion-Broker — Cluster-Verwaltung

Die Bastion-Schicht ermöglicht KI-Agenten, viele Hosts hinter einem Sprungserver zu bedienen, ohne Vault-Passwörter in den Kontext zu kopieren oder Geheimnisse auf dem Laptop zu verstreuen.

Vorteil

Was es in der Praxis bedeutet

Einheitliche Steuerungsebene

Registrieren Sie einen Bastion-SSH-Alias (b150), synchronisieren Sie innere Aliase vom entfernten brokre und steuern Sie das gesamte Cluster über brokre list / MCP brokre_list

Intelligentes Routing

b150::db, b150::app-01, Multi-Hop b1::b2::inner — Routentrenner ::; geroutetes SSH verwendet standardmäßig SessionRelay

Geheimnisse bleiben auf der Bastion

Geroutete Ausführung führt ~/.brokre/bin/brokre auf dem Sprungserver aus; der Laptop hält Metadaten und Session-Gate, nicht die Passwörter der inneren Hosts

Menschliches Gate, agentenfreundlich

Bastion-Ausgang erfordert Entsperrung (TTY, /bastion-auth oder MCP-URL-Abfrage); Gate-Authentifizierung überlebt das Idle-Ablaufen der Verwaltungsoberfläche, sodass lange MCP-Ausführungen weiter funktionieren

Cluster-sichere Standardeinstellungen

Nur lokale Liste standardmäßig; explizite Bastion-Erkennung; Erreichbarkeitstests mit ms-Timeouts und Parallelitätsbegrenzungen; Schleifenerkennung und Audit-route/bastion-Felder

Privilegierte Operationen über Routen

brokre_exec_elevated und sudo/sudo -i-Pfade funktionieren über Bastionen mit Session-Wiederverwendung und PTY-Härtung

Typischer Ablauf für ein K8s / DB / Batch-Cluster hinter einem Einstiegshost:

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-Äquivalent:

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

Gate-Richtlinie (Standard vs. streng) — siehe Bastion-Gate-Richtlinie unten. Das Gate ist inaktiv, bis brokre bastion set-key ausgeführt wird; dann entsperrt Standard nur Bastion-Ausgangspfade; streng erfordert eine Entsperrung für jede Ausführung, während die Liste nur lokal bleibt, es sei denn, die Bastion-Erkennung wird angefordert.

Siehe Netzwerkübergreifende Listenvererbung und Bastion-Proxy unten für Einrichtungsdetails.

Related MCP server: agent-vault

CLI-Sicherheit (Kern)

brokre basiert auf einer Regel: Geheimnisse bleiben außerhalb der Reichweite der KI und außerhalb des beobachtbaren Prozesszustands.

Ebene

Was brokre tut

Kein Env- / ps-Leck

Die Injektion erfolgt über PTY-Eingabeaufforderung — Passwörter werden nie über -p, SSHPASS, MYSQL_PWD oder exportierte Env-Variablen übergeben

Elternprozess hält nie Klartext (Unix)

Gespeicherte Passwörter werden in einem kurzlebigen brokre --internal-injector-Kindprozess entschlüsselt, einmal auf das PTY geschrieben, dann beendet sich das Kind

KI kann nicht reveal

brokre reveal erfordert ein echtes TTY + Master-Passphrase; in der Web-UI nicht verfügbar und nicht über MCP exponiert

Vault im Ruhezustand

Feldweise AES-256-GCM; DEK mit OS-Keyring (Linux) oder ~/.brokre/.master_kek (macOS) + optionale Argon2id-Reveal-Passphrase

Audit

HMAC-verkettetes JSONL unter ~/.brokre/audit/audit.log; brokre audit list fragt Verlauf ab (nur Metadaten); brokre audit verify erkennt Manipulation

MCP-Grenze

MCP exponiert Metadaten (brokre_list), Ausführung (brokre_exec, brokre_exec_elevated), brokre_setup und schreibgeschütztes Audit (brokre_audit_list, brokre_audit_verify) — keine Passwörter, Session-Tokens oder reveal

Verwaltungsoberfläche

Bindet nur an 127.0.0.1; Passwörter sind nur schreibbar; Audit-Log-Tab für Verlauf; Session-Token wird in Ihrem Terminal ausgegeben, nie an die KI zurückgegeben

OS-Härtung

Core-Dumps deaktiviert, ptrace-Prüfungen (Linux), optionales mlockall — siehe docs/HARDENING.md

Vollständiges Bedrohungsmodell: SECURITY.md, THREAT_MODEL.md.

Jede CLI im PATH (generisch von Design)

brokre ist keine feste Liste von Datenbank-/SSH-Wrappern. Das Kernmodell ist:

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

Erste Verbindung: wörtlich ausführen, das von Ihnen an der Eingabeaufforderung eingegebene Passwort erfassen, als Alias speichern anbieten.
Nächstes Mal: brokre <cli> <alias> … injiziert automatisch — KI und Skripte sehen nur den Aliasnamen.

Voreingestellte Eingabeaufforderungsmuster sind für gängige Tools enthalten (ssh, mysql, psql, redis-cli, ftp, clickhouse, git, docker, kubectl, sudo, …). Alles andere verwendet einen generischen password: / passphrase:-Matcher — keine Codeänderungen erforderlich.

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

Bei Bedarf anpassen:

  • ~/.brokre/prompts.toml — pro-Binary-Eingabeaufforderungs-Regex-Überschreibungen

  • ~/.brokre/manage.toml — benutzerdefinierte Abschnitte in der Verwaltungsoberfläche (z. B. GaussDB, interne Tools)

Integrierte Verwaltungsoberflächen-Tabs (wenn das Binary installiert ist) umfassen SSH, FTP, MySQL, PostgreSQL, Redis, ClickHouse, MinIO — nur Komfort; der PTY-Wrapper funktioniert für jede CLI.

Installation (MCP zuerst — empfohlen für KI)

Das npm-Paket brokre startet den lokalen brokre mcp-Server über stdio für Cursor, Claude Code, Kimi Code, Trae, OpenClaw, Windsurf, VS Code und andere MCP-Clients.

Wählen Sie Ihren Installationspfad

Pfad

Am besten für

Installation

MCP in IDEs

CLI-Upgrade

npm (empfohlen)

KI-Benutzer; möchten einen Befehl

npm install -g brokre

Automatisch bei Installation (postinstall)

npm + automatischer Download bei jedem MCP-Start

install.sh / Homebrew

Produktion; kein Node für den täglichen Gebrauch

curl … | bash oder brew install brokre

brokre mcp setup nach IDE-Installation ausführen

brokre version / brokre upgrade

Manuelles MCP-JSON

Nur benutzerdefinierte Layouts

CLI oder npm bereits vorhanden

IDE-Konfiguration von Hand bearbeiten

Hängt davon ab, wie die CLI installiert wurde

Empfohlener MCP-Eintrag (auch was das Auto-Setup schreibt):

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

Kein Node — MCP auf das native Binary zeigen: { "command": "brokre", "args": ["mcp"] }.

Pfad A — npm-Einzeiler (0.2.8+)

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

Bei npm install passieren automatisch drei Dinge:

  1. MCP-Launcher — brokre-mcp / npx -y brokre@latest startet brokre mcp.

  2. IDE-Autoregistrierung — postinstall führt brokre-setup-mcp aus: erkennt nur installierte IDEs (App, CLI oder echte Nutzungsartefakte — keine leeren Ordner) und fügt den obigen MCP-Eintrag in jede globale Konfiguration ein. Idempotent; bewahrt Ihre anderen MCP-Server.

  3. Binary-Autoupgrade — bei jedem MCP-Start, wenn PATH oder ~/.brokre/bin/brokre älter als das npm-Paket ist, wird das passende GitHub Release heruntergeladen.

Von Auto-Setup abgedeckte IDEs

IDE

Globale Konfiguration

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)

Registrierung erneut ausführen (z. B. Sie haben brokre vor Cursor installiert und Cursor später installiert):

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

Autoregistrierung bei npm install überspringen: BROKRE_MCP_SKIP_SETUP=1. Binary-Autodownload deaktivieren: BROKRE_SKIP_AUTO_INSTALL=1. Binary festlegen: BROKRE_BIN=/path/to/brokre.

Erfordert Node.js 18+ für den npm-Pfad.

Pfad B — Native CLI (install.sh / Homebrew, kein npm)

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

Version und Upgrade (in die CLI integriert — kein npm erforderlich):

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

Erneutes Ausführen von install.sh aktualisiert auch, wenn eine neuere Version existiert.

MCP nach CLI-Installation registrieren (benötigt Node für das Setup-Skript oder npx-Fallback):

brokre mcp setup

Manuelle Einrichtung pro IDE (optional)

Verwenden Sie dies nur, wenn Sie die automatische Einrichtung überspringen oder eine projektspezifische Konfiguration benötigen.

Cursor — Ein-Klick-Installation oder ~/.cursor/mcp.json:

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

Claude Code — Benutzerbereich in ~/.claude.json oder claude mcp add --scope user brokre -- npx -y brokre@latest. Projektbereich: .mcp.json mit "type": "stdio".

Weitere Clients und Umgebungsvariablen: packages/brokre-mcp/README.md. MCP-Registry-ID: io.github.Furowu/brokre.

MCP-Tools und Verwendung

MCP-Tool

Zweck

brokre_list

Gespeicherte lokale Aliase standardmäßig; setzen Sie include_bastions=true, um geroutete Aliase (b150::db) zu entdecken, was möglicherweise eine Bastion-Entsperrung erfordert; enthält access/availability/bastion_gate

brokre_exec

Führt jeden gespeicherten CLI-Alias aus (binary + args); ssh unterstützt shell_command für Remote-Skripte; ssh + sudo/su verwendet automatisch die erhöhte Sitzung wieder

brokre_exec_elevated

Remote-Befehl mit erhöhten Rechten (alias, command, mode); Standard session=reuse (10 Minuten Leerlauf-Timeout)

brokre_setup

Öffnet die Verwaltungsoberfläche im Browser, damit der Mensch Anmeldedaten hinzufügen kann

brokre_audit_list

Audit-Verlauf abfragen (nur Metadaten — Argumente sind redigiert)

brokre_audit_verify

Manipulationssichere Audit-Log-Kette verifizieren

brokre_bastion_policy

Bastion-Gate-Modus lesen oder setzen (default / strict); gibt key_set, unlocked zurück

MCP vs. CLI (wesentlich für KI-Agenten)

brokre ist kein direkter Ersatz für ssh / mysql — Sie müssen brokre voranstellen, um die Vault-Injektion zu erhalten.

Aufgabe

MCP (in der IDE)

CLI (Terminal / Debugging)

Aliase auflisten

brokre_list

brokre list --json

SSH-Remote-Befehl

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

brokre ssh prod uname -a

Beliebige CLI

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

brokre mysql prod-db -e "SHOW TABLES"

Remote-Skript schreiben

shell_command="…" (nur ssh)

brokre ssh prod sh -c '…' (ganzes Skript als ein -c-Argument)

Erhöhte Ausführung

brokre_exec_elevated command="…"

brokre ssh prod sudo … (MCP hat Sitzungspool; CLI verwendet jedes Mal eine neue PTY)

Anmeldedaten hinzufügen

brokre_setup (öffnet Browser)

brokre manage --open

Erstmaliges Speichern

nicht verfügbar (menschliches TTY erforderlich)

brokre ssh user@10.0.0.1

Häufige Fehler (KI-Agenten)

Falsch

Richtig

ssh prod uptime

brokre ssh prod uptime

MCP args=["prod","uname -a"] (eine Shell-Zeichenkette)

args=["prod","uname","-a"] (argv-Token)

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

shell_command="echo hi" oder args=["prod","sh","-c","echo hi"]

nacktes mysql -h … -p

brokre mysql <gespeicherter-Alias> …

Für Remote-SSH: Token nach dem Alias sind argv-Slices, kein einzelner Shell-Befehl. Verwenden Sie geteilte Token für einfache Befehle; verwenden Sie shell_command für komplexe Skripte.

MCP-erhöhte Sitzungen (sudo / su, Unix)

Standardmäßig verwendet brokre mcp eine Hintergrund-Shell mit erhöhten Rechten pro (alias, mode, user) wieder, sodass sudo-Passwörter nicht bei jedem Aufruf erneut abgefragt werden.

brokre_exec_elevated (bevorzugt für Rechteausweitung):

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

Feld

Beschreibung

mode

sudo, sudo_login (oder sudo-i), su

session

reuse (Standard), new (alte Sitzung schließen und neue öffnen), close (Sitzung beenden; command: "" übergeben)

user

nur im su-Modus; Standard root

Wenn der Sitzungspool aktiviert ist, enthalten die Antworten session_reused und session_idle_expires_at zusätzlich zu exit_code / stdout / stderr. session_idle_expires_at ist ein rollierender Leerlauf-Fenster-Hinweis, der bei jedem Aufruf aktualisiert wird, kein fester Ablaufzeitstempel. stderr ist auf dem Pool-Pfad normalerweise leer. stdout ist nur die Remote-Befehlsausgabe — TTY-Echo, __BROKRE_*-Rahmen und Shell-Eingabeaufforderungen werden entfernt.

brokre_exec: binary=ssh mit sudo/su in args verwendet automatisch denselben Pool (immer reuse; kein session=new|close). Beispiel: args=["prod","sudo","whoami"].

Remote-Skripte/Dateien schreiben (shell_command, nur binary=ssh): Übergeben Sie nur den Alias in args; fügen Sie das vollständige Shell-Skript in shell_command ein (brokre normalisiert zu sh -c). Betten Sie sh -c '...' nicht in args ein und teilen Sie printf/Redirects nicht über argv-Token auf. Für privilegierte Systempfade verwenden Sie brokre_exec_elevated.command.

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

Bastion-Routen funktionieren genauso: args=["b150::db"] mit shell_command als Remote-Skript.

SessionRelay-Tunnel (Standard)

brokre ssh b150::db verwendet standardmäßig den SessionRelay-Pfad: Das Laptop startet brokre tunnel agent --stdio auf b150 über SSH, und der Agent führt brokre ssh db auf der Bastion aus. Mehrfach-Hop-Routen entfernen einen Hop pro Agent (b1::b2::db startet auf b1, dann fährt b1 mit b2::db fort). Innere Anmeldedaten bleiben im Bastion-Vault; das Laptop leitet nur Terminal-Bytes weiter. BROKRE_TUNNEL=0 ist eine temporäre Legacy-Notluke für den Notfall-Rollback.

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

MCP-brokre_exec-Antworten für geroutete SSH enthalten tunnel: { mode, active }. TcpForward, Endpunkt-Synchronisierung, Tunnelsteuerung der Verwaltungsoberfläche und persistentes tunneld sind spätere Phasen.

Steuerung

Standard

Leerlauf-Abbau

10 Minuten

Maximale Lebensdauer

30 Minuten

Timeout pro Befehl

120 Sekunden

Variable

Standard

Bedeutung

BROKRE_MCP_SESSION

1

0 deaktiviert den Pool; fällt auf einmalige Subprozess-Ausführung zurück

BROKRE_MCP_SESSION_IDLE_SECS

600

Leerlauf-Timeout (Sekunden)

BROKRE_MCP_SESSION_MAX_SECS

1800

Maximale Sitzungslebensdauer (Sekunden)

BROKRE_MCP_SESSION_CMD_TIMEOUT

120

Remote-Befehlstimeout (Sekunden)

Nicht unterstützt: interaktives sudo -i ohne Befehl, vim/top oder sudo-Passwörter, die sich vom password-Feld des Vaults unterscheiden. Siehe THREAT_MODEL.md T12.

Bei der ersten Verbindung mit einem leeren Vault öffnet brokre manage in Ihrem Browser (http://127.0.0.1:56777/?t=…). Sitzungstoken bleiben auf localhost — werden nie an die KI zurückgegeben. Setzen Sie BROKRE_MCP_NO_AUTO_OPEN=1, um das automatische Öffnen zu deaktivieren.

| MCP-Tool | Zweck |

Anmeldedaten hinzufügen

Nach der CLI-Installation öffnet sich der Manager beim ersten Start (brokre manage --onboard --open). Oder jederzeit:

brokre manage --open

Oder speichern Sie bei der ersten interaktiven Verbindung (beliebige CLI):

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

Verwendung (KI-sicher)

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

Metadaten auflisten (sicher für KI / Skripte)

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

Wenn Bastionen registriert sind, bleibt brokre list standardmäßig nur lokal und führt kein SSH zu Bastionen durch und löst keine Bastion-Entsperrung aus. Verwenden Sie brokre list --include-bastions (MCP: include_bastions=true), wenn Sie tatsächlich geroutete Aliase wie b150::db benötigen; diese Remote-Erkennung kann eine Entsperrung erfordern.

OpenSSH-Sitzungen injizieren standardmäßig ConnectTimeout=5 (BROKRE_SSH_CONNECT_TIMEOUT). Überschreiben Sie mit -o ConnectTimeout=N oder der Umgebungsvariable. Bastion-RPC (brokre list --include-bastions / Remote-Liste) läuft nach 60 Sekunden ab (BROKRE_BASTION_RPC_TIMEOUT). Remote-Befehle verwenden ControlPath=none, sodass sie sich nicht an einen ControlPersist-Mux-Master anhängen.

Netzwerkübergreifende Listenvererbung (Bastion-Broker)

Für netzwerkübergreifenden Zugriff — Reisen, VPN, öffentliche Einstiegspunkte — wenn direkte LAN-Aliase lokal nicht erreichbar sind, aber über eine Bastion, die brokre ausführt, erreichbar sind.

Voraussetzungen

  1. Laptop: brokre bastion enable b150 (b150 ist ein gespeicherter SSH-Alias)

  2. Bastion-Host führt brokre unter ~/.brokre/bin/brokre (Standardinstallation / npx-Pfad) mit gespeicherten inneren Aliasen (z. B. db) aus

Geroutete Liste

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

Bei netzwerkübergreifendem Zugriff verwenden Sie --include-bastions, wenn Sie geroutete Aliase benötigen. Einfaches brokre list bleibt nur lokal und entsperrt oder führt kein SSH zu Bastionen durch.

Ausführen

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

Wenn beide Pfade funktionieren, zeigt die Liste beide db (direct) und b150::db (via_b150) — unterscheiden Sie durch access.

Bastion-Proxy (netzwerkübergreifender / Intranet-Einstieg)

Erheben Sie jeden gespeicherten SSH-Alias, dessen Remote-Host brokre ausführt, zu einem Bastion-Broker. Geheimnisse bleiben auf der Bastion; das Laptop speichert Metadaten im Cache und führt über SSH-Passthrough aus.

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
  • Routentrenner :: (: ist in Aliasnamen illegal): db (lokal), b150::db (über Bastion), b1::b2::inner (mehrfacher Hop, Standardtiefe ≤2).

  • Remote-brokre: geroutete Ausführung ruft ~/.brokre/bin/brokre auf der Bastion auf (mit BROKRE_SOFT_MEMLOCK=1, BROKRE_ALLOW_FILE_KEYCHAIN=1, BROKRE_ROUTED_INNER=1 für headless Linux). Interaktive Befehle (z. B. sudo -i) erhalten automatisch -tt.

  • Schutzmechanismen: Probe-Concurrency-Limit, ms-Timeouts, kurzer Cache, Schleifenerkennung, Audit route/bastion (HMAC v4).

  • Verwaltungsoberfläche: brokre manage Bastion-Tab — Bastionen registrieren/deaktivieren, Web-Set-Key und Entsperren/Sperren, Strict-Mode-Umschalter, Remote-Aliase synchronisieren; Nicht-TTY öffnet weiterhin automatisch /bastion-auth. Audit-Tab filtert nach bastion/source und zeigt Routenfelder.

Bastion-Gate-Richtlinie (Standard vs. strikt)

Das Bastion-Gate ist ein menschlicher Freigabeschritt vor sensiblen Operationen. Es ist aus, bis Sie einen Bastion-Schlüssel festlegen (brokre bastion set-key). Nachdem ein Schlüssel existiert, richtet das Entsperren eine lokale TTL-Sitzung ein (brokre bastion unlock, TTY-Passphrase, Verwaltungsoberfläche /bastion-auth oder MCP-Browser-Elicitation).

Die Richtlinie wird unter ~/.brokre/bastion/policy.json gespeichert (strict_mode, Standard false).

Modus

gate_mode

Wann eine Entsperrung erforderlich ist (Schlüssel muss gesetzt sein)

Standard

default

Nur Bastion ausgehend – b150::inner geroutete Ausführung; SSH/scp/sftp zu einem registrierten Bastion-Alias; brokre list / brokre_list, wenn die Bastion-Erkennung per SSH zu Bastionen verbindet. Rein lokale Ausführung (z. B. brokre ssh lan-db) erfordert keine Entsperrung.

Streng

strict

Jede brokre exec / MCP brokre_exec; rein metadatenbasiertes brokre list bleibt lokal, während --include-bastions weiterhin eine Entsperrung erfordert. Verwenden Sie dies, wenn Sie einen Menschen in der Schleife für die Agentenausführung haben möchten, während ein Bastion-Schlüssel konfiguriert ist.

Beispiele (Standardmodus, Schlüssel gesetzt, Sitzung gesperrt)

Operation

Entsperrung erforderlich?

brokre ssh prod uname -a (lokaler Alias)

Nein

brokre ssh b150::db uname -a

Ja

brokre ssh b150 uptime (registrierter Bastion)

Ja

brokre list --include-bastions

Ja

brokre list (nur lokal)

Nein

Im strengen Modus erfordern Ausführungszeilen eine Entsperrung; rein metadatenbasiertes brokre list bleibt lokal und entsperrt nicht, es sei denn, --include-bastions wird verwendet.

Gate-Modus festlegen

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

Oberfläche

Wie

CLI

brokre bastion strict on|off|status

Verwaltungsoberfläche

Bastion-Tab – Umschalter für den strengen Modus

MCP

brokre_bastion_policy – aktuelle Richtlinie lesen oder {"strict_mode": true} / false übergeben

Die MCP-Leseantwort enthält strict_mode, gate_mode, key_set, unlocked. Listen-/Ausführungsantworten enthalten bastion_gate (required, unlocked_during_call, idle_expires_at).

Entsperr-Sitzungs-TTL (Standard): 30 Min. Leerlauf (BROKRE_BASTION_IDLE_SECS), 8 Std. maximale Lebensdauer (BROKRE_BASTION_MAX_SECS). Das Leerlauffenster erneuert sich bei jedem gesperrten Aufruf, während entsperrt ist (gemeinsam über CLI, MCP und Verwaltungsoberfläche über ~/.brokre/run/bastion_session.json). Die Bastion-Gate-Authentifizierung ist unabhängig vom Leerlauf-Ablauf der Verwaltungsoberflächen-Sitzung. Deaktivieren Sie das automatische Öffnen des Browsers bei MCP-Entsperrung: BROKRE_BASTION_NO_AUTO_OPEN=1.

Anzeigen / Löschen (nur menschlich, echte TTY)

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

Audit-Protokoll (nur Metadaten)

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

Ereignisse werden unter ~/.brokre/audit/audit.log gespeichert (HMAC-verkettet). Befehlsargumente werden einheitlich als <REDACTED> geschwärzt. Neue Ereignisse enthalten ein source-Feld (cli, mcp oder manage). Die Registerkarte Audit-Protokoll der Verwaltungsoberfläche und MCP brokre_audit_list legen dieselben Metadaten offen.

Sicherheit der Verwaltungsoberfläche

  • Nur 127.0.0.1; Sitzungstoken im Terminal

  • Passwörter: nur erstellen / rotieren – keine Lese-API

  • Löschen / Rotieren erfordert die Anzeige-Passphrase (oder YES für automatisch gespeicherte Datensätze)

  • 15-minütiges Leerlauf-Timeout

Architektur

┌─────────┐     ┌──────────┐     ┌─────────────┐     ┌────────────┐
│ AI/User │────▶│ brokre CLI│────▶│ OS Keychain │────▶│ Vault File │
└─────────┘     └──────────┘     └─────────────┘     └────────────┘
                      │
                      ▼
               ┌─────────────┐
               │  PTY + inj. │──▶ any CLI on PATH (ssh, mysql, gsql, …)
               └─────────────┘
  • Doppelte Verschlüsselung: eindeutiger DEK pro Feld; separat für exec und reveal verpackt.

  • Vault-Metadaten: profile, name, host_alias, saved_args im Klartext neben dem Chiffretext (THREAT_MODEL.md T3).

  • SSH-Privatekeys: temporäre Datei 0600 + -i für die Sitzung (docs/HARDENING.md).

Voreingestellte Gruppen der Verwaltungsoberfläche

Praktische Registerkarten, wenn die Binärdatei im PATH ist:

Gruppe

Binärdateien

SSH

ssh, scp, sftp (gemeinsame Anmeldedaten)

FTP

ftp, lftp

MySQL

mysql, mariadb

PostgreSQL

psql, postgres

Redis

redis-cli, redis

ClickHouse

clickhouse-client, clickhouse

MinIO

mc, minio

Fahrplan

Heute: generischer PTY-Wrapper + manage.toml-Gruppen + prompts.toml-Überschreibungen.

Geplant: vollständige TOML-Connector-Profile unter ~/.brokre/profiles/ mit pro-Tool-Injektionsstrategien.

Piped stdin und OpenSSH-Freigabe

  • Piped stdin (tar | brokre ssh host 'tar xf -'): Pipe-Daten werden nur nach Abschluss der Injektion weitergeleitet.

  • OpenSSH-Familie (ssh, scp, sftp): gemeinsame gespeicherte Anmeldedaten, wenn der Host übereinstimmt. Interaktives Speichern ist zuerst erforderlich (TTY).

Entwicklung

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

Die Release-Version wird in VERSION deklariert (auch in Cargo.toml und packages/brokre-mcp/package.json widergespiegelt). Offizielle Binärdateien und npm-Pakete werden von TechinOne über GitHub Releases und CI veröffentlicht – nicht Teil dieses Open-Source-Baums.

Lizenz

MIT – siehe 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