Skip to main content
Glama

brokre — Agente de credenciales seguro para IA

English | 简体中文

brokre es un agente de credenciales local para agentes de IA y humanos. Úsalo con Cursor, Claude Code, Kimi Code, Trae, OpenClaw, Hermes Agent, ChatClaw y otros clientes compatibles con MCP para ejecutar ssh, mysql, psql y más — las contraseñas nunca entran en el contexto de la IA, en las variables de entorno ni en la salida de ps. Envuelve cualquier CLI en tu PATH — no solo SSH o MySQL — e inyecta las contraseñas guardadas en el prompt sin exponer texto plano al proceso de IA, al historial del shell ni al entorno del proceso.

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

Novedades en 0.2.17

0.2.17 es la versión actual: SessionRelay enrutado por SSH por defecto, rutas bastión de múltiples saltos, lista local por defecto y el flujo existente de instalación npm en un comando / registro MCP automático / actualización automática del binario.

npm — instalar, autoactualizar, configuración MCP automática

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

Capacidad

Qué ocurre

Registro MCP automático

postinstall ejecuta brokre-setup-mcp — detecta solo los IDEs instalados y fusiona npx -y brokre@latest en cada configuración MCP global. Re-ejecutar: brokre mcp setup o npx brokre-setup-mcp. Omitir: BROKRE_MCP_SKIP_SETUP=1.

Actualización automática del binario

En cada inicio de MCP, compara la versión del paquete npm con PATH / ~/.brokre/bin/brokre; descarga el GitHub Release correspondiente si falta o es más antiguo.

CLI sin npm

brokre version / brokre upgrade para usuarios de install.sh; brokre mcp setup para registrar MCP después de instalar IDEs.

IDEs soportados

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

Configuración MCP recomendada (también aplicada por la configuración automática):

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

Agente bastión — gestión de clústeres

La capa bastión permite a los agentes de IA operar muchos hosts detrás de un solo servidor de salto sin copiar contraseñas del vault al contexto ni dispersar secretos en el portátil.

Ventaja

Qué significa en la práctica

Plano de control único

Registra un alias SSH bastión (b150), sincroniza alias internos desde brokre remoto y maneja todo el clúster desde brokre list / MCP brokre_list

Enrutamiento inteligente

b150::db, b150::app-01, multi-salto b1::b2::inner — separador de ruta ::; SSH enrutado usa SessionRelay por defecto

Los secretos permanecen en el bastión

La ejecución enrutada ejecuta ~/.brokre/bin/brokre en el host de salto; el portátil guarda metadatos y la puerta de sesión, no las contraseñas de los hosts internos

Puerta humana, amigable para agentes

La salida del bastión requiere desbloqueo (TTY, /bastion-auth, o elicitación de URL MCP); la autenticación de la puerta sobrevive a la caducidad de inactividad de la UI de gestión para que las ejecuciones MCP largas sigan funcionando

Valores predeterminados seguros para clústeres

Lista local por defecto; descubrimiento de bastión explícito; sondas de alcance con timeouts en ms y límites de concurrencia; detección de bucles y campos de auditoría route/bastion

Operaciones privilegiadas sobre rutas

brokre_exec_elevated y rutas sudo/sudo -i funcionan a través de bastiones con reutilización de sesión y endurecimiento de PTY

Flujo típico para un clúster K8s / DB / batch detrás de un solo host de entrada:

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

Equivalente MCP:

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

Política de puerta (predeterminada vs estricta) — ver Política de puerta bastión más abajo. La puerta está inactiva hasta brokre bastion set-key; luego predeterminada desbloquea solo las rutas de salida del bastión; estricta requiere desbloqueo para cada ejecución mientras la lista permanece local a menos que se solicite descubrimiento de bastión.

Ver Herencia de lista entre redes y Proxy bastión más abajo para detalles de configuración.

Related MCP server: SSH Vault MCP

Seguridad CLI (núcleo)

brokre se basa en una regla: los secretos permanecen fuera del alcance de la IA y fuera del estado observable del proceso.

Capa

Qué hace brokre

Sin fuga de env / ps

La inyección se basa en el prompt PTY — las contraseñas nunca se pasan mediante -p, SSHPASS, MYSQL_PWD ni variables de entorno exportadas

El padre nunca tiene texto plano (Unix)

Las contraseñas guardadas se descifran en un hijo de corta duración brokre --internal-injector, se escriben una vez en el PTY y luego el hijo sale

La IA no puede reveal

brokre reveal requiere un TTY real + frase de contraseña maestra; no disponible en la web UI y no expuesto vía MCP

Vault en reposo

AES-256-GCM por campo; DEK envuelto con llavero del SO (Linux) o ~/.brokre/.master_kek (macOS) + frase de contraseña opcional de revelación Argon2id

Auditoría

JSONL encadenado con HMAC en ~/.brokre/audit/audit.log; brokre audit list consulta historial (solo metadatos); brokre audit verify detecta manipulación

Frontera MCP

MCP expone metadatos (brokre_list), ejecución (brokre_exec, brokre_exec_elevated), brokre_setup y auditoría de solo lectura (brokre_audit_list, brokre_audit_verify) — sin contraseñas, tokens de sesión ni reveal

UI de gestión

Se vincula solo a 127.0.0.1; las contraseñas son de solo escritura; pestaña de registro de auditoría para historial; token de sesión impreso en tu terminal, nunca devuelto a la IA

Endurecimiento del SO

Dumps de núcleo deshabilitados, comprobaciones de ptrace (Linux), mlockall opcional — ver docs/HARDENING.md

Modelo de amenazas completo: SECURITY.md, THREAT_MODEL.md.

Cualquier CLI en PATH (genérico por diseño)

brokre no es una lista fija de envoltorios de bases de datos/SSH. El modelo central es:

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

Primera conexión: ejecuta tal cual, captura la contraseña que escribes en el prompt, ofrece guardarla como alias.
Siguiente vez: brokre <cli> <alias> … auto-inyecta — la IA y los scripts solo ven el nombre del alias.

Patrones de prompt predefinidos se incluyen para herramientas comunes (ssh, mysql, psql, redis-cli, ftp, clickhouse, git, docker, kubectl, sudo, …). Todo lo demás usa un matcher genérico de password: / passphrase: — sin necesidad de cambios de código.

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

Personaliza cuando sea necesario:

  • ~/.brokre/prompts.toml — anulaciones de regex de prompt por binario

  • ~/.brokre/manage.toml — secciones personalizadas en la UI de gestión (p. ej. GaussDB, herramientas internas)

Las pestañas integradas de la UI de gestión (cuando el binario está instalado) incluyen SSH, FTP, MySQL, PostgreSQL, Redis, ClickHouse, MinIO — solo conveniencia; el envoltorio PTY funciona para cualquier CLI.

Instalar (MCP primero — recomendado para IA)

El paquete npm brokre lanza el servidor local brokre mcp sobre stdio para Cursor, Claude Code, Kimi Code, Trae, OpenClaw, Windsurf, VS Code y otros clientes MCP.

Elige tu ruta de instalación

Ruta

Mejor para

Instalación

MCP en IDEs

Actualización CLI

npm (recomendado)

Usuarios de IA; quieren un comando

npm install -g brokre

Automática en la instalación (postinstall)

npm + descarga automática en cada inicio de MCP

install.sh / Homebrew

Producción; sin Node para uso diario

curl … | bash o brew install brokre

Ejecuta brokre mcp setup después de instalar el IDE

brokre version / brokre upgrade

MCP JSON manual

Solo diseños personalizados

CLI o npm ya presentes

Editar configuración del IDE a mano

Depende de cómo se instaló la CLI

Entrada MCP recomendada (también lo que escribe la configuración automática):

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

Sin Node — apunta MCP al binario nativo: { "command": "brokre", "args": ["mcp"] }.

Ruta A — npm en una línea (0.2.8+)

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

En npm install, ocurren tres cosas automáticamente:

  1. Lanzador MCPbrokre-mcp / npx -y brokre@latest genera brokre mcp.

  2. Registro automático en IDEspostinstall ejecuta brokre-setup-mcp: detecta solo los IDEs instalados (app, CLI o artefactos de uso real — no carpetas vacías) y fusiona la entrada MCP anterior en cada configuración global. Idempotente; conserva tus otros servidores MCP.

  3. Actualización automática del binario — en cada inicio de MCP, si PATH o ~/.brokre/bin/brokre es más antiguo que el paquete npm, se descarga el GitHub Release correspondiente.

IDEs cubiertos por la configuración automática

IDE

Configuración global

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)

Re-ejecutar registro (p. ej. instalaste brokre antes que Cursor, y luego instalaste Cursor más tarde):

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

Omitir registro automático en npm install: BROKRE_MCP_SKIP_SETUP=1. Deshabilitar descarga automática del binario: BROKRE_SKIP_AUTO_INSTALL=1. Fijar un binario: BROKRE_BIN=/path/to/brokre.

Requiere Node.js 18+ para la ruta npm.

Ruta B — CLI nativa (install.sh / Homebrew, sin npm)

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

Versión y actualización (integrado en la CLI — sin necesidad de 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

Re-ejecutar install.sh también actualiza cuando existe una versión más reciente.

Registrar MCP después de la instalación de CLI (necesita Node para el script de configuración, o respaldo con npx):

brokre mcp setup

Configuración manual por IDE (opcional)

Úsalo solo si omites la configuración automática o necesitas configuración a nivel de proyecto.

Cursorinstalación con un clic, o ~/.cursor/mcp.json:

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

Claude Code — ámbito de usuario en ~/.claude.json o claude mcp add --scope user brokre -- npx -y brokre@latest. Ámbito de proyecto: .mcp.json con "type": "stdio".

Más clientes y variables de entorno: packages/brokre-mcp/README.md. ID en MCP Registry: io.github.Furuwu/brokre.

Herramientas MCP y uso

Herramienta MCP

Propósito

brokre_list

Alias locales guardados por defecto; establece include_bastions=true para descubrir alias enrutados (b150::db), lo que puede requerir desbloqueo del bastión; incluye access/availability/bastion_gate

brokre_exec

Ejecuta cualquier alias CLI guardado (binary + args); ssh admite shell_command para scripts remotos; ssh + sudo/su reutiliza automáticamente la sesión elevada

brokre_exec_elevated

Comando privilegiado remoto (alias, command, mode); por defecto session=reuse (tiempo de inactividad de 10 min)

brokre_setup

Abre la interfaz de gestión en el navegador para que el humano agregue credenciales

brokre_audit_list

Consulta el historial de auditoría (solo metadatos — argumentos redactados)

brokre_audit_verify

Verifica la cadena de registro de auditoría a prueba de manipulaciones

brokre_bastion_policy

Lee o establece el modo de puerta del bastión (default / strict); devuelve key_set, unlocked

MCP vs CLI (esencial para agentes de IA)

brokre no es un reemplazo directo para ssh / mysql — debes prefijar con brokre para la inyección de credenciales.

Tarea

MCP (en IDE)

CLI (terminal / depuración)

Listar alias

brokre_list

brokre list --json

Comando SSH remoto

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

brokre ssh prod uname -a

Cualquier CLI

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

brokre mysql prod-db -e "SHOW TABLES"

Escribir script remoto

shell_command="…" (solo ssh)

brokre ssh prod sh -c '…' (todo el script como un solo argumento -c)

Ejecución privilegiada

brokre_exec_elevated command="…"

brokre ssh prod sudo … (MCP tiene pool de sesiones; CLI usa PTY nueva cada vez)

Agregar credenciales

brokre_setup (abre el navegador)

brokre manage --open

Guardado inicial

no disponible (requiere TTY humano)

brokre ssh user@10.0.0.1

Errores comunes (agentes de IA)

Incorrecto

Correcto

ssh prod uptime

brokre ssh prod uptime

MCP args=["prod","uname -a"] (una sola cadena)

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

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

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

mysql -h … -p sin prefijo

brokre mysql <alias-guardado> …

Para SSH remoto: los tokens después del alias son segmentos argv, no un solo comando de shell. Usa tokens separados para comandos simples; usa shell_command para scripts complejos.

Sesiones elevadas MCP (sudo / su, Unix)

Por defecto, brokre mcp reutiliza un shell elevado en segundo plano por (alias, mode, user) para que las contraseñas de sudo no se vuelvan a pedir en cada llamada.

brokre_exec_elevated (preferido para escalada de privilegios):

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

Campo

Descripción

mode

sudo, sudo_login (o sudo-i), su

session

reuse (por defecto), new (cierra la sesión anterior y abre una nueva), close (termina la sesión; pasa command: "")

user

solo modo su; por defecto root

Cuando el pool de sesiones está habilitado, las respuestas incluyen session_reused y session_idle_expires_at además de exit_code / stdout / stderr. session_idle_expires_at es una indicación de ventana de inactividad móvil que se actualiza en cada llamada, no una marca de expiración fija. stderr suele estar vacío en la ruta del pool. stdout es solo la salida del comando remoto — el eco TTY, el marco __BROKRE_* y los prompts de shell se eliminan.

brokre_exec: binary=ssh con sudo/su en args usa automáticamente el mismo pool (siempre reuse; sin session=new|close). Ejemplo: args=["prod","sudo","whoami"].

Escritura de scripts/archivos remotos (shell_command, solo binary=ssh): pasa solo el alias en args; pon el script completo en shell_command (brokre normaliza a sh -c). No incrustes sh -c '...' en args ni dividas printf/redirecciones entre tokens argv. Para rutas privilegiadas del sistema usa brokre_exec_elevated.command.

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

Las rutas de bastión funcionan igual: args=["b150::db"] con shell_command como script remoto.

Túnel SessionRelay (por defecto)

brokre ssh b150::db usa la ruta SessionRelay por defecto: el portátil inicia brokre tunnel agent --stdio en b150 a través de SSH, y el agente ejecuta brokre ssh db en el bastión. Las rutas de múltiples saltos eliminan un salto por agente (b1::b2::db comienza en b1, luego b1 continúa con b2::db). Las credenciales internas permanecen en el vault del bastión; el portátil solo retransmite bytes de terminal. BROKRE_TUNNEL=0 es una vía de escape heredada temporal para rollback de emergencia.

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

Las respuestas de MCP brokre_exec para SSH enrutado incluyen tunnel: { mode, active }. TcpForward, sincronización de endpoints, controles de túnel en la interfaz de gestión y tunneld persistente son fases posteriores.

Control

Predeterminado

Teardown por inactividad

10 minutos

Vida máxima

30 minutos

Tiempo de espera por comando

120 segundos

Variable

Predeterminado

Significado

BROKRE_MCP_SESSION

1

0 desactiva el pool; vuelve a ejecución de subproceso de un solo uso

BROKRE_MCP_SESSION_IDLE_SECS

600

Tiempo de inactividad (segundos)

BROKRE_MCP_SESSION_MAX_SECS

1800

Vida máxima de la sesión (segundos)

BROKRE_MCP_SESSION_CMD_TIMEOUT

120

Tiempo de espera del comando remoto (segundos)

No compatible: sudo -i interactivo sin comando, vim/top, o contraseñas de sudo diferentes del campo password del vault. Ver THREAT_MODEL.md T12.

En la primera conexión con un vault vacío, brokre abre manage en tu navegador (http://127.0.0.1:56777/?t=…). Los tokens de sesión permanecen en localhost — nunca se devuelven a la IA. Establece BROKRE_MCP_NO_AUTO_OPEN=1 para desactivar la apertura automática.

| Herramienta MCP | Propósito |

Agregar credenciales

Después de la instalación de CLI, el administrador se abre en la primera ejecución (brokre manage --onboard --open). O en cualquier momento:

brokre manage --open

O guarda en la primera conexión interactiva (cualquier CLI):

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

Uso (seguro para IA)

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

Listar metadatos (seguro para IA / scripts)

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

Cuando hay bastiones registrados, brokre list permanece solo local por defecto y no hace SSH a bastiones ni activa el desbloqueo de bastión. Usa brokre list --include-bastions (MCP: include_bastions=true) cuando realmente necesites alias enrutados como b150::db; ese descubrimiento remoto puede requerir desbloqueo.

Las sesiones OpenSSH inyectan ConnectTimeout=5 por defecto (BROKRE_SSH_CONNECT_TIMEOUT). Sobrescribe con -o ConnectTimeout=N o la variable de entorno. El RPC de bastión (brokre list --include-bastions / lista remota) expira después de 60s (BROKRE_BASTION_RPC_TIMEOUT). Los comandos remotos usan ControlPath=none para no adjuntarse a un maestro de multiplexación ControlPersist.

Herencia de lista entre redes (broker de bastión)

Para acceso entre redes — viajes, VPN, puntos de entrada públicos — cuando los alias LAN directos no son alcanzables localmente pero sí a través de un bastión que ejecuta brokre.

Requisitos previos

  1. Portátil: brokre bastion enable b150 (b150 es un alias SSH guardado)

  2. El host del bastión ejecuta brokre en ~/.brokre/bin/brokre (instalación estándar / ruta npx) con alias internos guardados (p. ej. db)

Lista enrutada

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

Cuando estés entre redes, usa --include-bastions si necesitas alias enrutados. brokre list simple permanece solo local y no desbloquea ni hace SSH a bastiones.

Ejecutar

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

Cuando ambas rutas funcionan, la lista muestra ambos db (direct) y b150::db (via_b150) — distínguelos por access.

Proxy de bastión (entrada entre redes / intranet)

Promueve cualquier alias SSH guardado cuyo host remoto ejecute brokre a un broker de bastión. Los secretos permanecen en el bastión; el portátil almacena en caché los metadatos y ejecuta mediante paso a través de 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
  • Separador de ruta :: (: es ilegal en nombres de alias): db (local), b150::db (vía bastión), b1::b2::inner (múltiples saltos, profundidad predeterminada ≤2).

  • brokre remoto: la ejecución enrutada invoca ~/.brokre/bin/brokre en el bastión (con BROKRE_SOFT_MEMLOCK=1, BROKRE_ALLOW_FILE_KEYCHAIN=1, BROKRE_ROUTED_INNER=1 para Linux sin cabeza). Los comandos interactivos (p. ej. sudo -i) obtienen automáticamente -tt.

  • Protecciones: límite de concurrencia de sondeo, timeouts en ms, caché corta, detección de bucles, auditoría route/bastion (HMAC v4).

  • Interfaz de gestión: pestaña Bastion de brokre manage — registrar/deshabilitar bastiones, establecer clave y desbloquear/bloquear desde web, alternar modo estricto, sincronizar alias remotos; sin TTY aún se abre automáticamente /bastion-auth. La pestaña de auditoría filtra por bastion/source y muestra campos de ruta.

Política de puerta de bastión (predeterminada vs estricta)

El gate de bastión es un paso de desbloqueo humano antes de operaciones sensibles. Está desactivado hasta que establezcas una clave de bastión (brokre bastion set-key). Una vez que existe una clave, el desbloqueo establece una sesión TTL local (brokre bastion unlock, frase de contraseña TTY, UI de gestión /bastion-auth o elicitación del navegador MCP).

La política se almacena en ~/.brokre/bastion/policy.json (strict_mode, por defecto false).

Modo

gate_mode

Cuándo se requiere desbloqueo (la clave debe estar establecida)

predeterminado

default

Solo saliente de bastión — ejecución enrutada b150::inner; SSH/scp/sftp a un alias de bastión registrado; brokre list / brokre_list cuando el descubrimiento de bastión hace SSH a bastiones. La ejecución local puramente (p. ej. brokre ssh lan-db) no requiere desbloqueo.

estricto

strict

Cada brokre exec / MCP brokre_exec; brokre list solo de metadatos permanece solo local, mientras que --include-bastions aún requiere desbloqueo. Úsalo cuando quieras un humano en el circuito para la ejecución de agentes mientras una clave de bastión está configurada.

Ejemplos (modo predeterminado, clave establecida, sesión bloqueada)

Operación

¿Se necesita desbloqueo?

brokre ssh prod uname -a (alias local)

No

brokre ssh b150::db uname -a

brokre ssh b150 uptime (bastión registrado)

brokre list --include-bastions

brokre list (solo local)

No

En modo estricto, las filas de ejecución requieren desbloqueo; brokre list solo de metadatos permanece solo local y no se desbloquea a menos que se use --include-bastions.

Establecer modo de gate

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

Superficie

Cómo

CLI

brokre bastion strict on|off|status

UI de gestión

Pestaña Bastión — alternar modo estricto

MCP

brokre_bastion_policy — lee la política actual, o pasa {"strict_mode": true} / false

La respuesta de lectura MCP incluye strict_mode, gate_mode, key_set, unlocked. Las respuestas de listado/ejecución incluyen bastion_gate (required, unlocked_during_call, idle_expires_at).

TTL de sesión de desbloqueo (valores predeterminados): 30 min de inactividad (BROKRE_BASTION_IDLE_SECS), 8 h de vida máxima (BROKRE_BASTION_MAX_SECS). La ventana de inactividad se renueva en cada llamada con gate mientras está desbloqueada (compartida entre CLI, MCP y UI de gestión a través de ~/.brokre/run/bastion_session.json). La autenticación del gate de bastión es independiente del vencimiento por inactividad de la sesión de la UI de gestión. Desactiva la apertura automática del navegador en el desbloqueo MCP: BROKRE_BASTION_NO_AUTO_OPEN=1.

Revelar / eliminar (solo humano, TTY real)

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

Registro de auditoría (solo metadatos)

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

Los eventos se almacenan en ~/.brokre/audit/audit.log (encadenado con HMAC). Los argumentos de comandos se redactan uniformemente como <REDACTED>. Los nuevos eventos incluyen un campo source (cli, mcp o manage). La pestaña Registro de auditoría de la UI de gestión y brokre_audit_list de MCP exponen los mismos metadatos.

Seguridad de la UI de gestión

  • 127.0.0.1 solamente; token de sesión en la terminal

  • Contraseñas: crear / rotar solamente — sin API de lectura

  • Eliminar / rotar requieren frase de contraseña de revelación (o YES para registros guardados automáticamente)

  • Tiempo de espera de inactividad de 15 minutos

Arquitectura

┌─────────┐     ┌──────────┐     ┌─────────────┐     ┌────────────┐
│ AI/User │────▶│ brokre CLI│────▶│ OS Keychain │────▶│ Vault File │
└─────────┘     └──────────┘     └─────────────┘     └────────────┘
                      │
                      ▼
               ┌─────────────┐
               │  PTY + inj. │──▶ any CLI on PATH (ssh, mysql, gsql, …)
               └─────────────┘
  • Doble cifrado: DEK único por campo; envuelto para exec y reveal por separado.

  • Metadatos de vault: profile, name, host_alias, saved_args en texto claro junto al texto cifrado (THREAT_MODEL.md T3).

  • Claves privadas SSH: archivo temporal 0600 + -i para la sesión (docs/HARDENING.md).

Grupos predefinidos de la UI de gestión

Pestañas de conveniencia cuando el binario está en PATH:

Grupo

Binarios

SSH

ssh, scp, sftp (credenciales compartidas)

FTP

ftp, lftp

MySQL

mysql, mariadb

PostgreSQL

psql, postgres

Redis

redis-cli, redis

ClickHouse

clickhouse-client, clickhouse

MinIO

mc, minio

Hoja de ruta

Hoy: envoltorio PTY genérico + grupos manage.toml + anulaciones prompts.toml.

Planificado: perfiles de conector TOML completos en ~/.brokre/profiles/ con estrategias de inyección por herramienta.

Entrada estándar canalizada y uso compartido de OpenSSH

  • Entrada estándar canalizada (tar | brokre ssh host 'tar xf -'): los datos de la tubería se reenvían solo después de que se complete la inyección.

  • Familia OpenSSH (ssh, scp, sftp): credenciales guardadas compartidas cuando el host coincide. Se requiere guardado interactivo primero (TTY).

Desarrollo

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

La versión de lanzamiento se declara en VERSION (también reflejada en Cargo.toml y packages/brokre-mcp/package.json). Los binarios oficiales y los paquetes npm son publicados por TechinOne a través de GitHub Releases y CI — no forman parte de este árbol de código abierto.

Licencia

MIT — ver 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