reminal
Permite a los agentes listar, buscar, leer y escribir en las terminales que ya tienes en ejecución, en cada máquina que posees.
Documentación
reminal
Cada ventana, escritorio y terminal de tus máquinas — en vivo en cualquier navegador.
Cierra la tapa del portátil y vete. reminal mantiene la máquina activa — y te entrega sus aplicaciones reales, no solo una shell — en cualquier navegador, desde cualquier lugar. Sin puertos abiertos, sin claves en disco, nada que instalar en el dispositivo que tienes en la mano.
La tapa se cierra sin monitor y sin adaptador conectado — y las ventanas siguen transmitiéndose, en vivo y controlables, a un navegador.
Sin monitor. Sin enchufe ficticio. Sin adaptador.
Al cerrar la tapa de un MacBook, macOS lo pone en reposo — a menos que esté enchufado con un monitor y teclado conectados. La solución habitual es un enchufe HDMI "ficticio" de hardware que simula una pantalla, o simplemente dejar la tapa abierta sobre tu escritorio.
El modo de tapa cerrada lo hace por software. Actívalo y vete — sin monitor, sin adaptador, en cualquier orden. reminal desactiva el reposo en modo concha y, como las aplicaciones GUI necesitan una pantalla para dibujar, crea una pantalla virtual en el momento en que el Mac se queda sin pantalla — para que el espejo de ventanas siga funcionando sin nada conectado. Desactívalo y todo se revierte.
El modo de tapa cerrada es solo para macOS; todo lo demás funciona en macOS, Linux y Windows por igual.
Configúralo en una línea
curl -fsSL https://raw.githubusercontent.com/harshalgajjar/Reminal/main/install.sh | sh
reminal
En Windows (PowerShell):
irm https://raw.githubusercontent.com/harshalgajjar/Reminal/main/install.ps1 | iex
reminal
Esa es toda la configuración — un comando en la máquina que dejas atrás. Todo lo demás que posees ya es un cliente, porque el cliente es un navegador.
Entra y maneja las aplicaciones
Cualquier ventana de aplicación se transmite en vivo a tu navegador — y no solo la miras, la manejas: cursor, clic y clic derecho, escribir, desplazarte, arrastrar, zoom con pellizco. ¿No está abierta? Inicia cualquier aplicación instalada en el host desde el menú Apps, y luego manéjala. O toca Host → Ver escritorio completo para ejecutar toda la máquina a la vez. En un teléfono, la pantalla se convierte en un panel táctil — tu Mac, completamente práctico, desde tu bolsillo.
Captura real, sin editar. El teléfono elige una ventana, escribe en ella — las palabras aparecen en la aplicación real en el Mac — y luego refleja todo el escritorio. Captura nativa, transmitida de igual a igual.
60 fps, desde una máquina que no está aquí
Y nada de esas ventanas dice transmisión. Arrástrala, desplázate por un video dentro de ella, mira pasar una compilación — se mantiene fluida todo el camino, en el Wi-Fi del hotel o en un teléfono con datos móviles. Sesenta fotogramas por segundo, 17 ms de su pantalla a la tuya.
H.264 por el propio DataChannel de la sesión — de igual a igual, alrededor de 2.6 Mbps. Los visores solo de retransmisión obtienen el mismo video a 30 fps.
También una terminal completa — escanea un código QR y estás dentro
reminal imprime un ID de sesión, un PIN y un código QR. Escanéalo, y tu teléfono es una terminal completa en tu máquina — color real, selección de texto táctil, teclas modificadoras en pantalla. Sin reenvío de puertos. Sin claves que gestionar. Nada que instalar en el teléfono; el navegador es el cliente.
El SSH más rápido que jamás configurarás — porque no hay nada que configurar.
Interactúa con tus máquinas como si estuvieran aquí
Saca cualquier ventana remota a tu escritorio y se queda ahí como su propia ventana de aplicación — excepto que se ejecuta en otra máquina por completo. Alinea un editor de tu MacBook, una terminal en una caja en la nube y un panel del Mac mini en casa, y trabaja en todos ellos como si fueran locales.
Posee tus máquinas. Obsérvalas todas.
En el momento en que tu trabajo abarca más de una máquina — un rack de servidores, o agentes sueltos en varias cajas a la vez — la parte difícil no es empezar, es verlo. reminal machines es una vista en vivo de todo lo que posees: cada máquina, cada terminal en ella, lo que se está ejecutando ahora, quién está mirando, cuánto tiempo ha estado inactiva. Un agente ejecutando una suite de pruebas en tu portátil, parcheando un CVE en una VM en la nube y rotando copias de seguridad en el Mac mini — o solo tus propias sesiones — todo de un vistazo. Está en la CLI y en el panel web Machines, donde puedes saltar a cualquier sesión, renombrarla, crear una nueva o eliminarla en cualquier caja.
Ese panel único funciona porque posees las máquinas. Inscribe un dispositivo una vez — reminal own imprime su id, pegas sudo reminal add owner <id> en cada máquina — y desde entonces llega a cada sesión sin PIN. La confianza es una clave por dispositivo: revocable de una en una, sudo-protegida para otorgar, y la retransmisión solo ve texto cifrado.
Tus agentes pueden verse entre sí
reminal integrate
Un comando registra el servidor MCP de reminal con cada CLI de agente que tengas — Claude Code, Codex, Cursor, Gemini, OpenCode, Antigravity, Amp. Desde entonces tus agentes pueden:
list_sessions— cada sesión que posees, en esta máquina y en cada caja inscritasearch_sessions— regex en el scrollback de terminal en vivo, en todas ellasread_transcript— leer la terminal de otra sesión como texto planosend_keys— escribir en el PTY de otra sesión, entre máquinas
Lo que significa que un agente en tu portátil puede ver lo que un agente en tu caja de compilación está haciendo, y responderle. No tienen que ser el mismo agente, ni del mismo proveedor — Claude Code puede manejar una sesión de Codex. No hay protocolo que adoptar ni nada contra lo que integrarse: el bus es la terminal. Si se ejecuta en un PTY, se puede leer y escribir en él.
Los agentes también pueden levantar la mano. add_note fija una insignia en la ventana real que está usando — el editor, el navegador que maneja — y eso llega a tu teléfono, donde puedes responder.
send_keysescribe pulsaciones de teclas reales en una shell real en una máquina que posees. Solo llega a cajas que tú mismo has inscrito, y todo lo que hace es visible en vivo en el visor — pero trátalo con el respeto que le darías a cualquier herramienta que pueda escribir Ctrl+C en tu terminal.
¿Prefieres sin MCP? Entrega a un agente un ID de sesión y un PIN y se conecta como cualquier otro visor, a cada máquina que hayas compartido.
Comparte un puerto local con el mundo
reminal expose 3000 convierte lo que se esté ejecutando en localhost en una URL HTTPS pública — un servidor de desarrollo, un objetivo de webhook, una compilación para mostrar a un cliente. Protegido con PIN por defecto (o --public para abrirlo), para que puedas compartir el enlace sin implementar nada. Es un ngrok integrado, en la herramienta que ya tienes ejecutándose.
Mueve un archivo entre dos máquinas cualesquiera
reminal copy report.pdf en una máquina imprime un código de un solo uso; reminal paste <code> en otra descarga el archivo — Mac a Linux, Windows a Mac, portátil a servidor, de cualquier lugar a cualquier lugar. Cifrado de extremo a extremo, sin nube, sin cuenta. AirDrop, para cada máquina que posees.
Lo último que instalarás de pie frente a tu computadora
Configúralo una vez, en persona — y luego nunca más tendrás que sentarte frente a esa máquina. Desde cualquier navegador obtienes su terminal, cualquier ventana, el escritorio completo, un enlace público a un puerto local, archivos hacia y desde ella, incluso una sesión en vivo compartida con otra persona. Una herramienta, cada trabajo remoto.
Cómo funciona
Tu máquina llama hacia afuera a una retransmisión por WSS; los visores llaman hacia afuera a la misma retransmisión. Nada escucha nunca en tu máquina. Todo a través de la retransmisión está cifrado de extremo a extremo — enruta texto cifrado que no puede leer. Los fotogramas de ventana y escritorio ni siquiera toman ese camino: viajan por una conexión WebRTC directa entre el navegador y el host.
Confías en Cloudflare para entregar paquetes — de la misma manera que confías en tu ISP con el tráfico SSH. Ninguno puede leer lo que envías. La diferencia: reminal nunca abre tu máquina a internet.
Todo lo que obtienes
Únete a una sesión desde cualquier lugar — teléfono (escanea el QR), cualquier navegador (abre la URL, escribe el PIN), u otra terminal (reminal --connect <id> --pin <pin>). Luego:
Shell persistente y resistenteCierra el portátil, cambia a tu teléfono, reconéctate desde otra ciudad — tu shell está justo donde la dejaste, y la pantalla actual se pinta al instante (una instantánea, sin avance rápido lento). ¿Se cae el Wi-Fi, túnel, ascensor? Reconexión automática con retroceso, 2 MiB de scrollback intacto. |
Comparte con cualquieraEnvía un ID de sesión y un PIN a un compañero por cualquier canal y se unen a la misma shell en vivo — o a un espejo de ventana — desde un navegador. Sin cuenta, sin instalación, múltiples visores a la vez. Ctrl+C lo termina; no hay nada que revocar. |
Sesiones que sobreviven a tu terminalInicia un trabajo largo y cierra la tapa — sigue ejecutándose. |
Terminal web sin instalaciónUna terminal xterm.js completa está integrada en la retransmisión. Cualquier navegador es el cliente — teléfono, iPad, portátil de trabajo bloqueado, PC del vestíbulo del hotel. Zoom con pellizco, selección de texto con manijas arrastrables, teclas modificadoras en pantalla, dictado por voz, búsqueda en scrollback. |
Archivos, puertos y pings
|
Seguro por construcciónSin puertos abiertos, ID de sesión + PIN efímeros, AES-256-GCM de extremo a extremo con un handshake X25519 autenticado por PIN que la retransmisión no puede descifrar sin conexión. Ctrl+C y las credenciales desaparecen. Detalles abajo. |
Posee una máquina, omite el PINInscribe un dispositivo como propietario — |
Cada máquina, una lista
|
Seguridad
Construido para ser tan seguro como un SSH correctamente configurado — y más seguro por defecto.
SSH deja el puerto 22 abierto, almacena claves de larga duración en disco y confía en que configures todo correctamente. reminal toma el enfoque opuesto: nada que exponer, nada permanente que robar, cifrado de extremo a extremo.
| Capa | Qué hace |
|---|---|
| Sin puertos abiertos | Tu máquina solo inicia conexiones salientes. No hay nada en la red que escanear, forzar por fuerza bruta o explotar con un zero-day. |
| Credenciales efímeras | El ID de sesión y el PIN existen solo mientras reminal está en ejecución. Ctrl+C y desaparecen para siempre. |
| Dispositivos propietarios, revocables | Un dispositivo que inscribes como propietario se conecta sin el PIN usando su propia clave — una ruta de confianza separada del PIN efímero, protegida por sudo para inscribirse y revocable por dispositivo (o auto-revocable desde cualquier navegador). El relay solo enruta texto cifrado. |
| Doble factor por diseño | Un atacante necesita tanto el ID de sesión (~1 billón de combinaciones) como el PIN de 6 dígitos. Saber uno solo es inútil. |
| Limitado por el agente | Cada intento de PIN cuesta un handshake en línea completo con tu máquina, y el agente responde como máximo ~6 por minuto (ráfaga de 8, un token cada 10s). Agotar un PIN de 6 dígitos a ese ritmo lleva meses — mucho más de lo que dura una sesión. |
| Cifrado de extremo a extremo | AES-256-GCM con una clave de sesión aleatoria de 256 bits por ejecución del agente. Distribuida a cada visor mediante un handshake X25519 autenticado por PIN (estilo EKE) — el relay nunca ve la clave ni nada que se pueda forzar offline a partir de ella. |
| Handshake con secreto perfecto hacia adelante | Cada conexión WebSocket ejecuta su propio intercambio X25519 efímero. Incluso si un atacante futuro recupera el PIN, el texto cifrado grabado permanece ilegible. |
| Ciego al relay | Cloudflare Workers enruta texto cifrado. Un relay que graba tráfico no puede recuperar la clave de sesión offline — los intentos de PIN incorrectos solo se detectan intentando un handshake completo en línea (un disparo cada vez, limitado por el throttle de kex del agente). |
| P2P en el que puedes confiar | La señalización WebRTC (SDP, ICE) viaja dentro del canal de sesión ya cifrado, así que el relay no puede manipular las huellas DTLS — sin ventana de man-in-the-middle. Los frames en el DataChannel están protegidos por DTLS de extremo a extremo. |
| TLS en tránsito | WSS / TLS en cada salto en producción. |
Una excepción deliberada: los reenvíos de puerto de reminal expose no están cifrados de extremo a extremo — el visitante es un navegador ordinario sin clave de reminal, así que ese tráfico pasa por el relay en texto plano (protegido por PIN, pero legible por el relay). Todo lo demás arriba es E2E. Auto-aloja el relay si eso te importa.
Mejores prácticas: comparte el ID de sesión y el PIN por canales diferentes (envía el ID por email, el PIN por SMS) · Ctrl+C al terminar — las credenciales mueren al instante · mantén el cliente actualizado con reminal upgrade.
Profundizando: Arquitectura de seguridad · Modelo de amenazas · Subprocesadores y manejo de datos · Autoevaluación · Reportar una vulnerabilidad
reminal vs SSH, de un vistazo
SSH fue diseñado en 1995 — asume una IP estática, un router que puedes configurar y claves que mantienes rotadas. reminal no asume nada de eso, así que las compensaciones se alinean de manera diferente:
| reminal | SSH | |
|---|---|---|
| Tiempo de configuración | Un comando | Claves, configuraciones, reenvío de puertos, firewalls |
| Puerto de escucha | Ninguno | TCP 22 expuesto a internet |
| Credenciales | ID de sesión efímero + PIN | Claves permanentes en disco |
| Detrás de NAT / Wi-Fi de hotel | Simplemente funciona | VPN o host de salto requerido |
| Cliente requerido en el visor | Ninguno — un navegador es el cliente | ssh + una clave configurada por dispositivo |
| Amigable con el teléfono | Escanea QR → dentro | Sin cliente nativo |
| La sesión sobrevive a la desconexión | El shell sigue corriendo, salta entre dispositivos | Pierde la conexión, pierde tu trabajo (a menos que lo envuelvas en tmux) |
| Caídas de red | Reconexión automática, reproducción de scrollback | Write failed: Broken pipe |
| Aplicaciones GUI | Espejo y control de cualquier ventana — o todo el escritorio | Reenvío X11, si te atreves |
| Tapa del portátil cerrada, sin monitor | Modo de tapa cerrada sigue sirviendo en un display virtual | Solo terminal |
| Si roban el portátil | Las sesiones ya están muertas | Las claves antiguas aún otorgan acceso |
| Cifrado | De extremo a extremo a través del relay | De extremo a extremo directo (si está bien configurado) |
Ejecuta tu propio relay (gratis, una vez)
El relay se ejecuta en Cloudflare Workers + Durable Objects. El nivel gratuito maneja miles de sesiones al mes — y los frames de ventana van peer-to-peer, así que el tráfico pesado nunca lo toca.
cd cloudflare
npm install
npx wrangler login
npm run deploy
Luego copia reminal.build.env.example al reminal.build.env ignorado por git,
pon tu URL de workers.dev allí, y ejecuta
./scripts/build.sh. No se necesita editar el código fuente. Guía completa en
cloudflare/README.md.
Desarrollo local
# Build once; source builds retain the upstream public relay by default
./scripts/build.sh
# Terminal 1 — your own relay on localhost:8080
./dist/reminal relay
# Terminal 2 — share a session via the local relay
REMINAL_LOCAL=1 ./dist/reminal
# Terminal 3 — connect from another shell or the browser
REMINAL_LOCAL=1 ./dist/reminal connect <session_id> <pin>
# or http://localhost:8080/?s=<session_id>
Para probar contra un relay remoto sin reconstruir, establece cualquiera de las URLs de runtime; reminal deriva su contraparte automáticamente:
REMINAL_RELAY=wss://your-relay.example/ws ./dist/reminal
# or: REMINAL_WEB=https://your-relay.example ./dist/reminal
Referencia
Soporte de plataformas
El espejo que ves arriba no es solo de macOS — la captura de ventanas y el control completo (clic, escribir, desplazar, arrastrar) funcionan en Linux/X11 y Windows también.
| Capacidad | macOS | Linux | Windows |
|---|---|---|---|
| Compartir terminal · sesiones · archivos · reenvío de puertos | ✅ | ✅ | ✅ ConPTY |
Conexión de propietario (sin PIN) · reminal machines | ✅ | ✅ | ✅ |
| Espejo y control de ventanas y escritorio | ✅ ScreenCaptureKit — H.264 hasta 60 fps | ✅ X11 — wmctrl · xdotool · ImageMagick | ✅ Win32 — PrintWindow · SendInput |
| Modo de tapa cerrada (display virtual automático) | ✅ | — | — |
Reinicio en caliente (reminal restart) | ✅ | ✅ | ✅ (las sesiones en primer plano se convierten en segundo plano + visor adjunto) |
La captura en Linux necesita una sesión X11 (o Xwayland) — Wayland nativo bloquea la entrada sintética, así que aún no está soportado. Apple Silicon, x86_64 y Windows ARM64 están todos soportados.
Notas de Windows
- Shell: las sesiones abren PowerShell 7 (
pwsh) cuando está instalado, si no Windows PowerShell, si nocmd— establece$env:SHELLpara anular. Los terminales se ejecutan a través de ConPTY, la misma API que usa Windows Terminal, así que los colores, TUIs y el redimensionado se comportan como una consola nativa. - Sin avisos de permisos: a diferencia de la concesión de Grabación de Pantalla de macOS, el espejo de ventanas y la inyección de entrada no necesitan nada habilitado — funciona de fábrica.
- Aviso de firewall en el primer espejo: cuando un visor se adjunta por primera vez a un panel de ventana/escritorio, el Firewall de Windows pregunta por reminal — eso es el stream peer-to-peer directo (WebRTC) que vincula un puerto UDP, el mismo aviso que recibe cualquier app de videollamada. Permitir habilita P2P; Cancelar también está bien — el streaming cae al camino cifrado del relay.
- Streaming: Windows usa la ruta de captura JPEG (~5–15 fps). El pipeline H.264 de 60 fps es actualmente solo de macOS.
- El espejo necesita un escritorio con sesión iniciada — una máquina en la pantalla de inicio de sesión (o una sesión de servicio) no tiene ventanas que capturar; compartir terminal funciona igualmente.
- Actualizaciones y reinicio en caliente:
reminal upgradereemplaza el exe en su lugar (el que se ejecuta se renombra a un lado), yreminal restartintercambia en caliente el agente de una sesión al nuevo binario sin tocar el shell interno — el shell de cada sesión vive en un proceso diminuto que sostiene ConPTY, así que el agente puede reemplazarse debajo de él (el PID de la sesión cambia, a diferencia de Unix). Una sesión en primer plano se reinicia convirtiéndose: se mueve a segundo plano y tu terminal se convierte en un visor adjunto de ella — mismo shell, mismas teclas, Ctrl-] se separa. El host en segundo plano también se reinicia automáticamente después de una actualización.
Comandos
| Comando | Qué hace |
|---|---|
reminal [--name <name>] | Comparte esta sesión de terminal |
reminal new [name] | Genera una sesión nueva en segundo plano (separada — sobrevive al cierre de este terminal) |
reminal list [filter] [-v] | Lista sesiones, más recientes primero; filtra por id/nombre/cwd/título (--idle, --viewers, --headless) |
reminal attach [id|name] | Reconecta a una sesión local como visor (sin argumento → selector interactivo) |
reminal connect <id-or-url> [pin] | Conecta a una sesión remota desde tu terminal (se pide PIN si se omite) |
reminal rename [id|name] <new-name> | Renombra una sesión en ejecución (dentro de una sesión: reminal rename <new-name>) |
reminal stop [id|name|port] | Detiene la capa de reminal — expulsa visores, mantiene tu shell/servidor corriendo |
reminal kill [id|name] | Termina completamente una sesión (mata el shell — irreversible) |
reminal prune [dur] [-y] | Mata sesiones inactivas y sin visores de una vez (inactividad predeterminada ≥ 30m) |
reminal restart [--all] | Intercambia en caliente el/los agente(s) en ejecución al binario más reciente — el shell sigue vivo |
reminal integrate [--remove] | Registra el servidor MCP de reminal con tus CLIs de agente (Claude Code, Codex, Cursor, Gemini, OpenCode, Antigravity, Amp) |
reminal mcp | Ejecuta el servidor MCP en stdio — lista, busca, lee y escribe en sesiones en todas tus máquinas |
reminal expose <port> [--public] | Reenvía un puerto HTTP local a una URL pública (protegida por PIN por defecto) |
reminal send <file> | Envía un archivo a cada visor conectado (el cliente web lo descarga automáticamente) |
reminal copy [--ttl <dur>] <file> | Ofrece un archivo para recoger desde cualquier lugar; imprime un código de un solo uso |
reminal paste <code> [dest] | Recupera un archivo ofrecido por reminal copy en otra máquina |
reminal notify <message> | Envía una notificación a los visores (notificación del navegador en la web) |
reminal connections | Lista los visores adjuntos actualmente con el tiempo de conexión |
reminal own | Imprime el id de propietario de este dispositivo + la línea de add owner para pegar en máquinas que quieras poseer |
reminal add owner <id> [--label <name>] | Inscribe un dispositivo propietario en esta máquina (necesita sudo / un terminal de Administrador en Windows) — le permite conectarse sin PIN |
reminal owners [rename|revoke|restore <id|label> …] | Lista / reetiqueta / revoca / restaura los dispositivos propietarios de esta máquina |
reminal machines [rename <id|name> <new-name>] | Lista cada máquina que posees y sus sesiones en vivo (el panel web de Máquinas las gestiona) |
reminal info [id|name] [--all] [--qr] [--json] | Muestra detalles de conexión — ID / PIN / URL / QR |
reminal qr [id|name] | Imprime solo el QR de unión (para una segunda pantalla) |
reminal settings | Página de configuración: mantén el Mac desbloqueado para control remoto; modo de tapa cerrada (sirve con la tapa cerrada y nada enchufado — desactiva el sueño de clamshell, crea automáticamente un display virtual mientras está sin cabeza) |
reminal doctor | Autodiagnóstico: versión, alcance del relay, terminal, shell |
reminal permissions | macOS: concede Grabación de Pantalla a reminal una vez, para que las sesiones en segundo plano (+) puedan hacer espejo de ventanas |
reminal completion <bash|zsh|fish|powershell> | Imprime un script de completado de shell |
reminal upgrade | Actualiza a la última versión |
reminal relay [port] | Inicia un relay local (solo desarrollo) |
reminal version [--verbose] | Imprime la versión |
Las sesiones se resuelven por id exacto, nombre exacto, prefijo único de id o subcadena única de nombre / cwd / título — reminal attach deploy simplemente funciona.
Variables de entorno
| Variable | Valor por defecto | Qué hace |
|---|---|---|
REMINAL_RELAY | Relay público upstream | URL base del WebSocket del relay; también deriva REMINAL_WEB cuando no está definido |
REMINAL_WEB | Interfaz web pública upstream | URL de la interfaz web; también deriva REMINAL_RELAY cuando no está definido |
REMINAL_LOCAL | — | Establécelo en 1 para apuntar todo a localhost |
REMINAL_OWNERS_DIR | /etc/reminal (%ProgramData%\reminal en Windows) | Dónde vive la lista de propietarios de la máquina (el almacén de confianza restringido por administrador) — sobrescríbelo para pruebas o diseños inusuales |
REMINAL_NO_KEEP_AWAKE | — | Establécelo en 1 para permitir que el host duerma mientras reminal se ejecuta (por defecto lo mantiene despierto mediante caffeinate / systemd-inhibit / SetThreadExecutionState) |
REMINAL_TURN / REMINAL_TURN_USER / REMINAL_TURN_PASS | — | Servidor TURN opcional para el espejo de ventanas P2P detrás de NAT hostiles (o REMINAL_TURN_CF_KEY + REMINAL_TURN_CF_TOKEN para Cloudflare TURN). Sin uno, los visores que no pueden atravesar NAT permanecen en el respaldo del relay |
REMINAL_NO_CAPTURE_HELPER | — | Establécelo en 1 para forzar la ruta de captura de pantalla (omite el asistente nativo ScreenCaptureKit) |
REMINAL_DEBUG | — | Establécelo en 1 para añadir la cadena de error cruda a las líneas de estado, para diagnosticar problemas de conexión |
SHELL | $SHELL, luego sondea /bin/zsh, /bin/bash, /bin/sh (Windows: pwsh → powershell → cmd) | Qué shell se inicia dentro de la sesión |
Se instala en ~/.local/bin/reminal (macOS/Linux) o %LOCALAPPDATA%\Programs\reminal (Windows) — no se necesita sudo/admin. Apple Silicon, x86_64 y Windows ARM64. Compila desde el código fuente con ./scripts/build.sh (Go 1.25+, toolchain de Swift en macOS para el asistente de captura nativo); en Windows es un simple go build ./cmd/reminal.
Para un valor predeterminado personalizado persistente en compilaciones locales, copia
reminal.build.env.example a reminal.build.env y establece
REMINAL_DEFAULT_RELAY y/o REMINAL_DEFAULT_WEB. El archivo local es ignorado
por git y se analiza como datos KEY=VALUE inertes (no se ejecuta como código de shell).
Los flujos de trabajo de lanzamiento usan variables de repositorio con los mismos nombres, por lo que
los forks pueden publicar sus propios valores predeterminados; cuando esas variables están ausentes, los
valores predeterminados upstream permanecen intactos para que las compilaciones de contribuyentes ordinarios y upstream
sigan funcionando.
¿Listo para probarlo?
curl -fsSL https://raw.githubusercontent.com/harshalgajjar/Reminal/main/install.sh | sh
reminal
En Windows (PowerShell):
irm https://raw.githubusercontent.com/harshalgajjar/Reminal/main/install.ps1 | iex
reminal
Escanea el código QR — ya estás dentro. Sin registro, sin reenvío de puertos, sin claves en disco. Aproximadamente 30 segundos desde esta página hasta tu propia máquina, en vivo en un navegador.
Licencia
reminal está bajo doble licencia según AGPL-3.0. Usarlo — personalmente o
dentro de una empresa, sin modificaciones — no requiere nada de nosotros. Una
licencia comercial cubre la integración de reminal en un producto que
distribuyas, o ejecutar una copia modificada como servicio. Consulta
LICENSING.md para ver dónde está esa línea, y CLA.md
si deseas contribuir.
Creado por @harshalgajjar. Las estrellas son apreciadas. Los problemas aún más.