Acceso remoto y MCP
borg mcp permite que un agente de IA como Claude trabaje en el borg que tienes abierto, ya sea en
tu propia máquina o en un servidor al que accedes por SSH. No necesitas instalar nada aparte de
borg: el propio agente inicia borg mcp (a través de SSH en el caso de un servidor), y este se
conecta a la sesión de borg que se está ejecutando allí. El servidor no necesita puertos abiertos
ni acceso a internet.
Conectar Claude
Sección titulada «Conectar Claude»Pulsa F1 y luego C (o elige F9 → Remoto → Compartir este Borg como host…). Borg muestra dos
comandos para pegar en un terminal de tu computadora: uno inicia Claude Code ya conectado a este
borg, y el otro añade la conexión a Claude Code para todas las sesiones. Tab elige uno, y Enter lo
copia al portapapeles de tu computadora a través del terminal. Esto funciona por SSH en iTerm2,
Ghostty, kitty, WezTerm y Alacritty (en tmux, añade set -g set-clipboard on). Donde el terminal
no lo acepta, como en muchos terminales del navegador, F3 muestra el comando solo, como texto
plano, para que puedas seleccionarlo con el ratón; cualquier tecla vuelve a borg.
Por SSH, borg rellena la dirección a la que te conectaste. Si tu computadora llega al servidor con
otro nombre, como un alias de SSH o a través de un host de salto, escribe ese nombre.
SSH debe iniciar sesión sin pedir contraseña, con una clave o un agente SSH. borg mcp setup prod
muestra la misma configuración para Claude Code y Claude Desktop desde la línea de comandos.
Qué puede hacer el agente
Sección titulada «Qué puede hacer el agente»Una vez conectado, el agente ve lo mismo que tú: la propia pantalla como texto, tanto si estás en
los paneles como en la consola, ambos paneles, los archivos resaltados y marcados, dónde se ejecuta
la línea de comandos y lo que hay escrito en ella. Se refiere a los sitios como ubicaciones: una
ruta absoluta o ~/… en la máquina donde se ejecuta borg, docker://web/etc/nginx dentro de un
contenedor, o una ruta relativa al panel activo. Sin preguntar, puede leer carpetas y archivos (por
rango de líneas, o solo las líneas que contienen cierto texto), ver los procesos más activos y los
contenedores, y mostrar un archivo o una carpeta en tu otro panel. También puede listar los puertos
abiertos, las conexiones y las interfaces de red con su tráfico, medido durante un segundo y acotado
con las mismas palabras que el filtro de la pantalla de red (consulta Filtrar).
También puede listar los elementos de inicio, con el cambio más reciente primero, con sus programas
y las reglas con las que coincidieron, acotados con las mismas palabras que el filtro de esa
pantalla (consulta Elementos de inicio).
Todo lo que modifica la máquina espera tu respuesta en un diálogo que muestra el cambio completo:
un comando y dónde se ejecutará, un archivo nuevo o una edición en forma de diff. Desplaza los
largos con las flechas, PgUp y PgDn, o la rueda del ratón, y pulsa F3 para ver el diálogo a
pantalla completa. La opción No sigue seleccionada hasta que eliges Sí, y el diálogo ignora Sí
durante su primer medio segundo, así que una tecla o un clic pensados para otra cosa no pueden
aprobarlo. Una edición se rechaza si el archivo cambió mientras decidías. También se rechaza un comando con tabulaciones, secuencias de
escape u otros caracteres de control, porque el diálogo no puede mostrarlos. El diálogo aparece encima de todo, incluidos el editor, el visor,
otro diálogo y el salvapantallas, y recibe todas las teclas hasta que respondas. Lo que tapaba vuelve
a aparecer después. Si el agente deja de esperar antes, el diálogo se cierra y un aviso lo indica.
Con una computadora emparejada, approval_mode te pregunta una
vez antes de activar Aprobar todo para esa sesión. Mientras está activo, se mantiene visible una
insignia; haz clic en ella o pulsa Ctrl+Alt+A para desactivarlo al instante. También se desactiva
cuando se cierra esa conexión emparejada. Las aprobaciones de emparejamiento son aparte.
Una solicitud también llega a tu propia computadora cuando un panel remoto en ella muestra la
sesión en la que espera (consulta Paneles remotos). Tu borg la muestra en el
mismo diálogo, con el nombre del servidor en el título, por encima de lo que estés haciendo, y
envía tu respuesta de vuelta por la conexión cifrada. El servidor también mantiene abierto su
propio diálogo. Cuenta la primera respuesta, venga de donde venga, y los demás diálogos se cierran
con un aviso que dice dónde se respondió. Una solicitud que el agente retira se cierra en todas
partes. Cuando otra computadora controla la sesión a través de un espejo, tu diálogo muestra la
solicitud sin Sí ni No, y Esc la cierra solo en tu pantalla. Mientras esa sesión lo apruebe todo,
tu borg muestra una insignia con el nombre del servidor; haz clic en ella o pulsa Ctrl+Alt+A para
desactivar Aprobar todo allí al instante. Solo tus teclas y clics responden a estos diálogos: las
herramientas del agente, incluida type, no pueden pulsar nada en ellos.
Los comandos se escriben en un shell que puedes observar, y no quedan en su historial. Los comandos para esta máquina van a la consola propia de borg, que se muestra mientras se ejecutan para que puedas responder a una petición como la de sudo; los comandos para un contenedor van al shell de ese contenedor en la vista de Docker. El shell conserva su carpeta y sus variables entre comandos.
El agente también puede escribir texto para que lo revises: un comando en el prompt, o un script en vim o nano abiertos en la consola. No se ejecuta nada: nunca se pulsa Enter, y el texto de varias líneas entra como un pegado, que los shells y los editores insertan sin ejecutarlo.
El agente también puede buscar en la memoria de un proceso igual que lo hace la búsqueda en memoria: cadenas, indicadores, texto o bytes. La memoria puede contener contraseñas, claves y mensajes privados, y todo lo que encuentra la búsqueda va al agente, así que la primera búsqueda en cada proceso espera tu aprobación en un diálogo que indica el proceso, su programa y la búsqueda. Una vez que lo apruebas, el agente puede volver a buscar en ese proceso y analizarlo hasta que borg sale. Puede pedir leer como administrador, lo que abre la petición de contraseña del propio sistema.
El agente también puede analizar con reglas YARA y comprobar la integridad del código, igual que Coincidencias de reglas en el diálogo de Ctrl-F y Y e I en el mapa de memoria (consulta Analizar archivos con reglas, Comprobación de integridad del código y Analizar la memoria con reglas). Un archivo o una carpeta de la máquina donde se ejecuta borg se analiza sin preguntar, igual que una lectura. El análisis de una carpeta lee todos los archivos que hay debajo en el mismo sistema de archivos, incluidos los ocultos. Deja sin leer los archivos de más de 64 MiB y se detiene tras 20 000 archivos, 2000 coincidencias o 45 segundos. Los archivos de los contenedores no se analizan.
Con un proceso es distinto, porque el análisis lee su memoria. El primer análisis de cada proceso espera tu aprobación en El agente remoto quiere analizar la memoria de un proceso, que indica el proceso, su programa y las comprobaciones: la de integridad, las reglas o ambas. Una aprobación cubre los análisis y las búsquedas en memoria de ese proceso hasta que borg sale, sea cual sea la que pidió primero el agente. Cada comprobación se detiene tras 45 segundos, 1 GiB de memoria o 2000 hallazgos. El agente puede pedir leer como administrador, lo que abre la petición de contraseña del propio sistema una sola vez para ambas comprobaciones.
Las reglas son las de Borg y las de tu carpeta de reglas, salvo que el agente aporte su propio texto
de reglas, de hasta 64 KiB. Así puede redactar una regla a partir de lo que encontró, probarla en
una carpeta o un proceso y afinarla. Ese texto se ejecuta solo, sin las reglas de Borg ni las tuyas,
no puede usar include y nunca se guarda. El texto que no compila vuelve al agente con el mensaje
del compilador, antes de cualquier diálogo. Para un proceso, el diálogo muestra el texto de reglas
del agente debajo de las comprobaciones, para que veas qué busca.
El agente recibe cada hallazgo, del más grave al menos grave, con su gravedad, su tipo, la regla y su origen, el archivo y el desplazamiento o la dirección y la región de memoria, hasta 64 bytes de lo que coincidió como texto o en hexadecimal, y qué más podría explicarlo. Después vienen cuánto se leyó, qué no se pudo leer, si el análisis terminó y los archivos de reglas que quedaron fuera. Las pruebas llegan al agente tal como se encontraron, claves y tokens incluidos, igual que con la búsqueda en memoria.
El agente también puede capturar tráfico como lo hace R en la pantalla de red (consulta Capturar tráfico). Indica qué grabar: un puerto, una conexión, un proceso por su PID o todo el tráfico de la interfaz. Para un proceso, Borg graba la interfaz entera y resume las conversaciones de ese proceso. Una captura dura de 1 a 60 segundos, o 5 si el agente no indica la duración. Cuando el agente no indica la interfaz, Borg mide durante un segundo y elige la que elegiría el diálogo Capturar tráfico. Cada captura espera tu aprobación en un diálogo, El agente remoto quiere capturar tráfico, que muestra el tráfico, la interfaz, la duración, cuánto guardar de cada paquete y la carpeta. Mientras dura, el pie de pantalla la muestra, y al terminar un aviso dice dónde la guardó Borg: en la carpeta del panel activo o en la que indique el agente, legible solo por ti. La captura de un agente siempre se ejecuta como tú y nunca pide la contraseña de un administrador, así que sin acceso termina con No tienes permiso para capturar en y el nombre de la interfaz.
El agente recibe un resumen: los protocolos que Borg reconoció y luego cada proceso, host y
conexión con sus paquetes y bytes, con los nombres de host sacados de las propias respuestas DNS de
la captura y de los nombres de servidor TLS. Borg vigila los sockets mientras dura la captura, así
que las conversaciones quedan asignadas a sus procesos aunque la pantalla de red esté cerrada. El
resumen deja fuera lo que llevan los paquetes. Leer un archivo .pcap, .pcapng o .cap da el
mismo resumen, acotado con las palabras del filtro del visor de tráfico, y el agente puede pedir un
paquete por su número para obtener sus capas y sus bytes en un volcado hexadecimal. Borg recuerda
los procesos de las últimas 16 capturas del agente hasta que sale. Los demás archivos muestran sus
conversaciones en Proceso desconocido, salvo que sus paquetes lleven su proceso.
Mientras hay un agente conectado, ◈ Remoto aparece al principio de la barra de atajos. Haz clic en él, o elige F9 → Remoto → Registro remoto… en cualquier momento, para ver un registro de lo que ha hecho el agente: lo que ha mirado, leído, analizado, mostrado y escrito, y cada comando y cambio, aprobado o rechazado. Cada sesión guarda su registro en disco, legible solo por ti, así que puedes volver a una sesión que dejaste en marcha y ver lo que pasó en ella, incluso después de que Borg haya salido. Cuando el registro crece mucho, Borg descarta las entradas más antiguas. Antes de guardar una entrada, Borg oculta las contraseñas, los tokens y las claves que reconoce, y deja fuera la salida de los comandos. Una contraseña pasada como una palabra más no se distingue de las demás, así que Borg no puede ocultarla. Para no guardar ningún registro, desactiva Remoto: llevar un registro de lo que hace en Opciones → Complementos, lo que también borra el registro guardado.
Borg cloud
Sección titulada «Borg cloud»Borg cloud permite que Claude llegue a un borg al que no tiene ruta SSH: un servidor que abres en un terminal del navegador, un contenedor o una máquina detrás de NAT. Ambos extremos se conectan hacia fuera a un relay, y el relay los une.
- En el borg del servidor, pulsa F1 y luego C. La primera opción es
borg paircon un enlace; Enter lo copia. El enlace funciona una sola vez, durante diez minutos. Debajo está el relay: para usar otro, pega ahí su dirección y pulsa Enter para guardarla y obtener un enlace a través de él. - Ejecuta el comando en un terminal de tu computadora, donde también esté instalado borg. Muestra
un código de emparejamiento: seis emojis, cada uno con su nombre, como
🐱 Cat · 🦁 Lion · 🐎 Horse. - El borg del servidor pregunta si quieres emparejar, y muestra el nombre de tu computadora y el
código. La pregunta aparece enseguida, incluso mientras F3 muestra el comando como texto. Elige
Sí si los códigos coinciden. Después,
borg pairofrece añadir el servidor a Claude Code, comoclaude mcp add borg-NAME -- borg mcp remote NAME. Espera tu respuesta 5 minutos; cuando se rinde o lo detienes, la pregunta se cierra y el enlace deja de funcionar.
El código procede del intercambio cifrado que los dos borgs acaban de completar, así que solo es el mismo en ambas pantallas si es tu computadora la que está hablando con el servidor. Alguien que se hubiera hecho con el enlace y lo usara antes mostraría al servidor un código distinto, y no puede elegir uno que coincida con el tuyo. Si tu terminal dibuja los emojis más estrechos de lo que borg espera, borg muestra solo los nombres; en ese caso, compara los nombres.
A partir de entonces, Claude puede llegar a ese borg siempre que esté en ejecución allí.
borg pair sin más argumentos enumera los servidores emparejados, y borg pair --forget NAME
olvida uno; en el servidor, F8 en el diálogo Acceso remoto olvida todas las computadoras
emparejadas. A través de borg cloud, Claude también obtiene download y upload, que copian
archivos entre el servidor y tu computadora; borg get NAME:PATH [TO] y
borg put FROM NAME:PATH hacen lo mismo desde tu terminal. Las descargas de Claude van a tu
carpeta Descargas y nunca reemplazan un archivo que ya esté allí. Las subidas esperan tu aprobación
en borg, que muestra el archivo que se envía, y cada aprobación indica qué computadora la pidió.
La conexión está cifrada de extremo a extremo. Cada borg guarda una clave de servidor, por la que lo
conocen las computadoras emparejadas, y una computadora que llega a servidores guarda además una
clave de computadora propia. Solo tú puedes leer ambas. La clave de servidor es un archivo en la
carpeta link de la carpeta de estado. La clave de computadora también es un archivo allí. En un
Mac se guarda en tu llavero de inicio de sesión, y en Linux el archivo se sella con una contraseña
(consulta Claves de computadora). El emparejamiento intercambia las claves
públicas, y cada conexión empieza con un intercambio Noise IK ligado a ellas, de modo que el relay
solo reenvía texto cifrado y no puede responder en nombre de ninguno de los dos borgs. Las llamadas
desde otra computadora pueden leer sin preguntar, igual que las locales; activa “preguntar antes de
que otra computadora lea” en Opciones → Complementos para que esas lecturas también esperen
aprobación. Borg no mantiene ninguna conexión con el relay salvo que esté emparejado o mostrando un
enlace de emparejamiento, y ninguna en absoluto cuando borg cloud está desactivado en Opciones →
Complementos.
Borg guarda el relay en la configuración como relay = "wss://relay.example.com". Una computadora
llega al servidor a través del relay con el que se emparejó, así que, si el servidor cambia de
relay, vuelve a emparejar la computadora. Todos los borgs de una misma máquina comparten sus claves,
y el servicio en segundo plano los conecta a todos al
relay. Con el servicio desactivado, solo se conecta el primer borg que se abre, y los demás te
indican cuál tiene borg cloud.
Claves de computadora
Sección titulada «Claves de computadora»La clave de computadora demuestra a cada servidor emparejado que una conexión viene de tu computadora. Cuando un servidor todavía conoce esta computadora por otra clave, como la clave de servidor de esta máquina, Borg lo cambia a la clave de computadora la próxima vez que abre una sesión allí. Borg demuestra al servidor que tiene la clave nueva, y el servidor cambia la clave en la entrada de esa computadora y conserva su nombre. Las conexiones que aún usan la clave anterior terminan en su siguiente llamada. El servidor muestra un aviso y escribe ambas huellas digitales en el registro del agente, y su lista de Clientes muestra cuándo cambió la clave y cuál era. Un servidor con un Borg más antiguo conserva la clave anterior hasta que se actualice.
En un Mac, Borg guarda la clave de computadora en tu llavero de inicio de sesión, como un elemento
llamado Borg Commander que solo Borg puede leer sin preguntarte. La primera vez que un proceso
de Borg necesita la clave, macOS pide Touch ID o tu contraseña, así que incluso un programa que
inicie borg por su cuenta se deja ver. Después de cada actualización de Borg, macOS también
pregunta una vez si el Borg nuevo puede usar el elemento; elige Permitir siempre. Un archivo de
clave de computadora de un Borg anterior pasa al llavero la primera vez que Borg lo usa, y el
archivo se elimina. Un Borg que se ejecuta sin la pantalla del Mac, como por SSH o en el servicio en
segundo plano, no puede mostrar la petición ni conectarse a servidores. Cuando $BORG_STATE_DIR
indica una carpeta de estado distinta de la habitual, Borg guarda la clave de computadora como un
archivo en la carpeta link de esa carpeta. Las versiones de Borg para macOS se firman con Hardened
Runtime, así que otros programas no pueden leer la memoria de Borg ni cargar código en él.
En Linux, Borg sella la clave de computadora con una contraseña que tú eliges, en el archivo
computer-key.sealed de la carpeta link. Ejecuta borg unlock en una terminal para elegirla:
Borg sugiere cuatro palabras al azar, fáciles de escribir y difíciles de adivinar, y pide la
contraseña dos veces. Borg refuerza la contraseña con Argon2id, lo que lleva unos segundos y 1 GiB
de memoria, o la octava parte de la memoria en una máquina con menos de 8 GiB, así que adivinarla a
partir de una copia del archivo es lento. Un archivo de clave de computadora de un Borg anterior se
sella la primera vez que ejecutas borg unlock, y el archivo se elimina; hasta entonces, Borg te
pide que lo ejecutes. Cuando $BORG_STATE_DIR indica una carpeta de estado distinta de la habitual,
Borg también guarda en Linux la clave de computadora como un archivo normal, sin contraseña.
Una vez desbloqueada, la clave queda en el keyring del kernel de tu usuario hasta que pasan 12 horas
sin que Borg la use, y cada uso vuelve a contar las 12 horas desde el principio. Un reinicio la
bloquea, y borg lock la bloquea al instante. Donde Borg no puede usar el keyring del kernel, como
en muchos contenedores y servicios del sistema, un pequeño proceso de Borg guarda la clave, en un
socket de la carpeta link que solo tú puedes abrir, y termina tras 12 horas sin uso. Cuando la
clave está bloqueada, Borg pide la contraseña: los paneles abren el diálogo Desbloquear clave, y
borg pair, borg get, borg put y borg mirror la piden en la terminal. borg mcp remote, que Claude inicia
sin terminal, te indica que ejecutes borg unlock.
borg unlock --ssh-agent permite además que tu ssh-agent desbloquee la clave. Borg pide al agente
que firme un desafío fijo con una clave Ed25519, o con una clave RSA si no tiene ninguna, y sella la
clave una segunda vez con esa firma. A partir de entonces, Borg desbloquea la clave sin preguntar
mientras ese agente esté disponible, y la contraseña sigue funcionando. Borg comprueba que el agente
firma igual dos veces y rechaza una clave cuyas firmas cambian. Cualquiera que pueda usar tu agente
puede obtener la misma firma: si lo reenvías con ssh -A, root en la máquina remota puede usarlo
mientras estás conectado y, con una copia del archivo sellado, desbloquear esta clave. Reenvía el
agente solo a máquinas de confianza, o deja esto desactivado. borg unlock --no-ssh-agent lo vuelve
a desactivar.
borg pair --new-key da a esta computadora una clave nueva, y cada servidor la acepta la próxima
vez que Borg se conecta a él. Hasta que todos la tengan, Borg conserva también la clave anterior, y
borg pair marca cada servidor que todavía la acepta. Pasada una semana, también sugiere olvidar
los servidores que ya no uses, con borg pair --forget NAME.
Cuando un servidor rechaza todas las claves que tiene esta computadora, Borg te lo dice. O alguien olvidó esta computadora en ese servidor, o alguien con una copia de su clave cambió antes el servidor a una clave propia. Una clave nueva es higiene y no deshace una filtración. Si crees que alguien copió una clave, pulsa F8 en Acceso remoto en cada servidor para olvidar las computadoras emparejadas, vuelve a emparejar y revisa esos servidores.
Sesiones con nombre y el servicio en segundo plano
Sección titulada «Sesiones con nombre y el servicio en segundo plano»Con espacios de trabajo con nombre, borg sessions list muestra sus ID y nombres,
borg sessions create NAME añade uno y borg --session NAME lo abre. Por MCP, el agente puede
llamar a list_sessions, list_remote_sessions y use_session para elegir con qué sesión trabaja
esa conexión. Una sola llamada a una herramienta también puede pasar un ID de session para
dirigirse a otra sesión solo esa vez. La sesión elegida solo se aplica a esa conexión MCP.
Con más de una sesión, o cuando la única que hay está abierta en otro terminal, borg empieza por
la ventana Sesiones de Borg. Sus primeras líneas explican qué es una sesión, y la lista muestra
cada sesión con la fecha en que se usó por última vez. Una sesión activa en este momento aparece
marcada con su estado: Abierta en otro terminal, o Mantenida por el servicio cuando la
ejecuta el servicio en segundo plano. Queda elegida la sesión usada por última vez, salvo que otro
terminal la tenga abierta. Enter abre la sesión elegida donde la dejaste; una sesión que mantiene el
servicio se abre conectada a él, como con borg service attach NAME. Un clic elige una sesión y un
segundo clic la abre. F7 pone nombre a una sesión nueva y la abre, y Esc o F10 sale sin abrir
ninguna. Mientras la ventana está abierta, comprueba cada 2 segundos qué sesiones están activas.
F8 o Delete elimina la sesión elegida, tras una confirmación cuya opción predeterminada es
No. Esto borra sus paneles guardados y su historial de terminal; tus archivos y carpetas se
conservan. La sesión predeterminada (Default) siempre se queda, igual que una sesión activa en este
momento: sal antes de Borg en el otro terminal. Para eliminar una sesión que mantiene el servicio,
ábrela con borg service attach NAME y sal con F10.
Cuando indicas con borg --session NAME una sesión que otro Borg tiene abierta en un terminal,
borg se detiene e indica qué Borg es: su número de proceso, su terminal tal como lo muestra ps y
hace cuánto se inició. Sal de ese Borg con F10 donde se esté ejecutando. Si ya no puedes llegar a su
terminal, termínalo con kill y el número de proceso.
Todos tus Borgs de una máquina comparten un servicio en segundo plano. El primer borg que abres lo
inicia, sin nada que instalar, y el servicio se detiene 30 segundos después de que se cierre la
última sesión. Para desactivarlo, pon start-service = false en la configuración.
El servicio mantiene borg cloud conectado para todos tus Borgs, así que una computadora emparejada llega a todas las sesiones abiertas. Trabaja en la sesión que indica, o en la que usaste por última vez, y espera allí tu aprobación. Puedes emparejar desde cualquier Borg.
Para mantener una sesión en marcha sin terminal, ejecuta borg service keep NAME. Ábrela con
borg service attach NAME o desde la ventana Sesiones de Borg, y pulsa Ctrl-] para
desconectarte. Salir de Borg allí con F10 termina la sesión. Cuando una computadora emparejada pide
una sesión que no está en marcha, el servicio la inicia en segundo plano.
Para iniciar el servicio con la máquina, ejecuta borg service install, enable y start. Estos
comandos usan sudo, que te pide la contraseña, salvo que seas root. borg service stop, disable y
uninstall los deshacen. También puedes elegir F9 → Remoto → Servicio en segundo plano…: el
diálogo muestra el comando del siguiente paso, y Enter lo ejecuta en el shell de Borg. En un
contenedor sin systemd, haz que el supervisor de procesos del contenedor ejecute borg service run.
Actualizar con sesiones abiertas
Sección titulada «Actualizar con sesiones abiertas»borg update instala la nueva versión, pasa el servicio en segundo plano a ella y te avisa cuando
el servicio ya la ejecuta. El servicio vuelve a arrancar en su propio proceso, así que las sesiones
que mantiene conservan su shell y los programas que se ejecutan en él. Cada Borg abierto lo sigue
cuando queda inactivo: espera a que terminen las tareas en curso, a que guardes o cierres los
archivos editados y a que se resuelva la solicitud del agente. Después vuelve a arrancar en el
mismo terminal, conserva su shell y te dice qué versión ejecuta ahora.
La actualización guarda la versión que sustituyó junto al archivo del programa, como
.borg.previous. Si la nueva versión no toma el relevo en 60 segundos, Borg restaura la anterior y
el servicio vuelve a arrancar con ella. Las sesiones que mantenía arrancan entonces con shells
nuevos.
Un servicio iniciado por un Borg más antiguo no puede cambiar de versión por sí solo. borg update
te lo indica, y el servicio usa la nueva versión la próxima vez que arranque.
Para actualizar una máquina emparejada, selecciónala en Hosts remotos y pulsa
U. Cuando confirmas, el host obtiene la última versión igual que con borg update, y su
servicio pasa a ella. Esc cierra el selector mientras la actualización sigue. Después Borg te
dice qué versión ejecuta el host, o que la nueva versión no arrancó y el host volvió a la que
ejecutaba. Un espejo de una de sus sesiones lo espera y vuelve a mostrar el host cuando regresa
(consulta Reflejar una sesión). Ejecuta borg update en el host cuando su
Borg sea más antiguo o funcione sin el servicio en segundo plano. Un Borg instalado allí con
Homebrew o cargo se actualiza con esa herramienta en el host, y Borg te indica el comando.
Paneles remotos
Sección titulada «Paneles remotos»Después de emparejar, borg --remote MACHINE:SESSION abre los archivos de esa sesión en el panel
izquierdo. Enter o F3 previsualizan un archivo remoto descargando una copia local temporal. F5
copia archivos y carpetas marcados entre paneles locales y remotos, o entre dos hosts emparejados,
y el diálogo de destino indica qué cliente o host es cada lado. Las copias se ejecutan como tareas
en segundo plano con progreso en bytes, pausa y cancelación, y la opción de sobrescribir, omitir o
conservar ambos. Las carpetas se copian con sus subcarpetas vacías y sus enlaces simbólicos, y los
archivos normales conservan su permiso de ejecución y su fecha de modificación. Un archivo solo
aparece en su destino cuando ha llegado todo su contenido. F6 (mover) y F8 (eliminar) no están
disponibles en los paneles remotos.
El panel derecho sigue en tu computadora. Con Opciones → Complementos → Seguir activado, la línea de comandos y Ctrl-O usan un shell interactivo en el host remoto. Su terminal se dibuja localmente, y las teclas, lo que pegas, Ctrl-C y los programas de terminal se ejecutan en el host remoto. Cada sesión remota conserva su propio shell y su línea de comandos a medio escribir mientras cambias de panel, y al seleccionar un panel del cliente vuelve el shell local.
Los programas a pantalla completa, y los que leen la entrada del teclado en bruto como top,
reciben todas las teclas mientras se ejecutan, Ctrl-O incluida, y al cambiar el tamaño del
terminal cambia el del PTY remoto. Sal de un programa así con sus propias teclas (q en top).
Si lo iniciaste desde la línea de comandos del panel, Borg vuelve después a los paneles; si lo
iniciaste en la consola remota, la consola sigue abierta. Los paneles y el shell propios del Borg
remoto son independientes de esta consola. Para transferir archivos desde la línea de comandos,
usa borg get MACHINE/SESSION:PATH [TO] y borg put FROM MACHINE/SESSION:PATH.
Escribir exit en el shell principal Bash, Zsh o Fish de Borg pide confirmación. No está
seleccionado por defecto y mantiene en marcha el mismo shell, las variables, la carpeta y los
espejos. En una consola remota, exit pregunta si quieres cerrar el shell en el host; si eliges
Sí, vuelve a elegir la sesión con Alt-H para obtener uno nuevo.
Las carpetas remotas se cargan por partes, con un indicador de actividad y un recuento de las entradas recibidas hasta el momento; al ir a otra carpeta se cancela la petición.
Mientras un panel remoto muestra una sesión, las solicitudes del agente que esperan allí aparecen también en tu pantalla, y puedes responderlas aquí (consulta Qué puede hacer el agente).
Hosts remotos
Sección titulada «Hosts remotos»En el Borg local, pulsa Alt-H, haz clic en Hosts remotos en la barra de atajos o elige F9 → Remoto → Explorar hosts y sesiones… para ver las máquinas emparejadas y sus sesiones con nombre. Enter abre los archivos de la sesión seleccionada en el panel desde el que abriste el selector, y sustituye lo que mostraba ese panel. Pulsa M para reflejar la pantalla de la sesión, U para actualizar el host (consulta Actualizar con sesiones abiertas) y R para actualizar la lista.
Tab alterna entre Hosts (computadoras a las que este Borg puede llegar) y Clientes (computadoras que pueden llegar a este Borg). Clientes enumera las computadoras emparejadas con este Borg, las huellas de sus claves públicas, si están conectadas y cuántas conexiones tiene cada una. Cuando una computadora cambió su clave, la línea de la huella digital también dice qué día y qué huella tenía antes. Una computadora aparece una sola vez aunque un espejo use varias conexiones. El estado se actualiza mientras el selector está abierto, también en una sesión cuyas conexiones mantiene el servicio en segundo plano. El emparejamiento funciona en un solo sentido: un cliente autorizado no se convierte automáticamente en un host cuyos archivos pueda explorar este Borg. Cuando el propietario de la conexión no puede informar del estado de la conexión, los clientes emparejados siguen apareciendo, con Estado de conexión no disponible. Un mismo Borg puede ser host y cliente a la vez. El menú Remoto también ofrece Reflejar host montado, Compartir este Borg como host…, Registro remoto… y Servicio en segundo plano….
El selector muestra la versión de Borg de cada host. Al seleccionar una sesión se muestran su sistema operativo y su arquitectura, si se ejecuta como servicio en segundo plano o en un terminal, la latencia de las peticiones y la dirección del relay. Los hosts se consultan en paralelo, de modo que un host no disponible no retrasa a los demás. Un host que no puede informar de su versión muestra versión no disponible; la versión del relay es otra cosa. Mantén Borg actualizado en ambas computadoras: un host al que le falta una función remota muestra un mensaje que te pide actualizarlo.
Mientras un espejo se conecta, el selector muestra un estado animado, y Esc cancela al instante. Cada paso de la conexión dispone de 10 segundos, y el intento completo de 30. Si el intento falla, el selector sigue abierto e indica qué paso falló; M vuelve a intentarlo con la sesión seleccionada.
En el selector, F2 cambia el nombre del host seleccionado para todas sus sesiones, y Shift-F2 cambia el nombre de la sesión seleccionada. Estos nombres se guardan en este cliente y aparecen en el selector, en los títulos de los paneles y en el pie de la consola. Deja un nombre vacío para volver al original. Los detalles siguen mostrando los nombres originales del host y de la sesión. Los nombres están ligados a la clave del host emparejado y al ID de la sesión; los destinos de los comandos y los nombres en el host remoto no cambian.
F8 sobre un host no disponible olvida su emparejamiento en este cliente, y Shift-F8 olvida el host seleccionado aunque esté en línea. La confirmación tiene No como opción predeterminada. Olvidar un host cierra los paneles y las consolas de este cliente para ese host; las sesiones y los archivos del host se conservan, igual que la identidad de este cliente y sus demás emparejamientos. Vuelve a emparejar para reconectar.
F8 o Delete sobre una sesión de un host la elimina, tras una confirmación cuya opción predeterminada es No. Esto cierra la sesión y sus consolas remotas, y elimina sus paneles de Borg guardados y su historial de terminal; los archivos y las carpetas del host se conservan. La sesión predeterminada (Default) no se puede eliminar. Una sesión independiente que en ese momento aloja la conexión no puede eliminarse a sí misma; ciérrala primero en el host y ejecuta Borg en otra sesión. Si la eliminación falla, la sesión sigue en la lista para que puedas intentarlo de nuevo. Una sesión en marcha se detiene primero, y el servicio no la vuelve a iniciar.
Reflejar una sesión
Sección titulada «Reflejar una sesión»borg mirror MACHINE:SESSION muestra la pantalla en vivo de la sesión remota en tu terminal local;
Alt+Shift+M abre el mismo espejo desde un Borg local con un panel remoto. Ctrl-G (mantén
pulsado Control y pulsa G) sale del espejo y vuelve a los paneles locales, igual que un clic en el
banner de la parte inferior. La línea de encima indica quién tiene el control; Ctrl-] también
sale.
Un borg normal o un borg --session NAME se puede reflejar mientras se ejecuta, sin el servicio
en segundo plano. Su propio terminal sigue visible, y cualquier entrada de teclado o ratón en él
recupera el control del espejo. Mientras tienes el control, Borg en el host organiza la pantalla
para tu ventana: cuando el espacio sobre el banner es más pequeño que el terminal del host, Borg
dibuja en la esquina superior izquierda de ese terminal con tu tamaño, y el resto queda en blanco.
Cuando el control vuelve al terminal del host o sales del espejo, Borg vuelve a ocupar todo ese
terminal. Un espejo sin control sigue la disposición del terminal del host y se recorta para caber
en una ventana más pequeña; si agrandas la ventana, ves el resto. Una sesión que mantiene el
servicio en segundo plano sigue viva después de que se cierre su terminal, y la computadora que
tiene el control define su tamaño.
Si otro terminal tiene el control de la sesión remota, el espejo se abre en modo de solo lectura y
tus teclas no llegan a la sesión. Pulsa Ctrl-T o haz clic en la línea de estado para tomar el
control y desconectar el otro terminal, o empieza con borg mirror MACHINE:SESSION --take;
--take siempre toma el control de otro espectador. Una vez que tienes el control, la primera
tecla activa una pantalla remota en reposo, y las teclas y la entrada del ratón posteriores llegan
a ella. Un espectador que se queda atrás omite los fotogramas antiguos de
animación y pasa directamente a la pantalla actual.
Cuando el host deja de responder, por ejemplo mientras se actualiza, el espejo conserva la última pantalla, lo indica en su línea de estado y vuelve a intentarlo cada 2 segundos durante 100 segundos como máximo. Mientras tanto, Ctrl-G sale del espejo. Cuando el host vuelve, el espejo muestra de nuevo su pantalla, con la versión que ejecuta ahora abajo a la derecha. Si el host sigue ausente después de eso, el espejo termina con un mensaje.
Una solicitud del agente aparece en el espejo tal como la muestra el servidor, y la respondes allí cuando tengas el control. Si abriste el espejo desde un panel remoto y la solicitud sigue esperando cuando sales de él, el borg de ese panel vuelve a mostrarla.
Ejecutar un relay
Sección titulada «Ejecutar un relay»borg-relay es el relay a través del cual se encuentran los borgs. En un servidor Linux con un
dominio que apunte a él y el puerto 443 libre, un solo comando lo instala como servicio, con un
certificado TLS de Let’s Encrypt:
curl -fsSL https://raw.githubusercontent.com/0xcd21h/borg-commander/main/scripts/install-relay.sh | sudo sh -s -- relay.example.com you@example.comEjecuta el mismo comando de nuevo para actualizarlo.
En Dokploy, Coolify u otro host de Docker cuyo proxy gestione TLS, ejecuta la imagen
ghcr.io/0xcd21h/borg-relay:latest y asígnale un dominio en el puerto 8080. En Dokploy, crea una
aplicación a partir de esa imagen de Docker con un dominio en el puerto 8080 del contenedor y HTTPS
activado; en Coolify, crea un recurso a partir de esa imagen de Docker con el puerto 8080 expuesto
y un dominio. Ambos aceptan también
packaging/relay/docker-compose.yml como servicio de
Compose. La imagen ejecuta borg-relay --behind-proxy: el proxy sirve HTTPS y deja pasar los
WebSockets, y el relay aplica sus límites por dirección de cliente, según la indica el proxy en
X-Forwarded-For. Se ejecuta como un usuario sin privilegios y tiene una comprobación de estado
(GET /health).
En un host de Docker sin un proxy así, la misma imagen sirve TLS por sí misma:
docker run -d --restart unless-stopped -p 443:443 -v borg-relay:/data ghcr.io/0xcd21h/borg-relay --domain relay.example.com --cache /dataDetrás de otro proxy que gestione TLS, ejecuta borg-relay --behind-proxy --listen 127.0.0.1:8080.
Ejecútalo así solo detrás de un proxy, porque el relay confía en la dirección de cliente que indica
el proxy. El relay impone límites por dirección en servidores y sesiones, tamaño de trama, ancho de
banda, bytes por sesión, tiempo de inactividad y duración de la sesión. No guarda nada salvo su
certificado.
El relay solo registra recuentos: una vez por minuto, si algo ha cambiado, escribe una línea como
stats: connections=3 servers=2 sessions=1 joined=14 carried=3.2MiB limited=0Esto muestra las conexiones que mantiene, los servidores registrados y las sesiones abiertas, y,
desde que se inició, las sesiones unidas, los bytes que transportaron y las conexiones y sesiones
que un límite rechazó o terminó. Para depurar, --log, o la variable de entorno
BORG_RELAY_LOG=1 en la imagen, registra además el registro de cada servidor por el inicio de su
clave, cada sesión con los bytes que transportó y cada límite alcanzado con la dirección del
cliente.
Esta guía sigue la rama main · Borg 0.11.0 · 1f6bce6
Puede que la última versión publicada no incluya todo lo que se describe aquí. Notas de la versión
Traducción de la guía en inglés. Las correcciones son bienvenidas. Los comandos y los atajos de teclado no se traducen.