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: SSH Vault MCP

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-Launcherbrokre-mcp / npx -y brokre@latest startet brokre mcp.

  2. IDE-Autoregistrierungpostinstall 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.

CursorEin-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 ausgehendb150::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. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityNo data
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Credential isolation proxy for AI agents. Injects API keys at the network boundary so your agent never sees the raw credential. Supports domain allowlists, agent auth, policy enforcement, and audit logging.
    3
    106
    13
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to securely access encrypted secrets (SSH keys, API tokens, passwords) with real-time user approval via Passkey, and supports SSH remote execution through the MCP protocol.
    -
  • A
    license
    Not graded
    quality
    C
    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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Furowu/brokre'

If you have feedback or need assistance with the MCP directory API, please join our Discord server