reminal
Permite que agentes listem, pesquisem, leiam e digitem nos terminais que você já tem em execução, em todas as máquinas que você possui.
Documentação
reminal
Cada janela, desktop e terminal nas suas máquinas — ao vivo em qualquer navegador.
Feche a tampa do laptop e vá embora. O reminal mantém a máquina servindo — e entrega seus aplicativos reais, não apenas um shell — em qualquer navegador, de qualquer lugar. Sem portas abertas, sem chaves no disco, nada para instalar no dispositivo que você está segurando.
A tampa fecha sem monitor e sem dongle conectado — e as janelas continuam transmitindo, ao vivo e controláveis, para um navegador.
Sem monitor. Sem plug fictício. Sem dongle.
Feche a tampa de um MacBook e o macOS o coloca em repouso — a menos que esteja na energia com um monitor e teclado conectados. A correção usual é um plug HDMI "fictício" de hardware que simula uma tela, ou simplesmente deixar a tampa aberta apoiada na sua mesa.
O modo de tampa fechada faz isso por software. Ative e vá embora — sem monitor, sem dongle, em qualquer ordem. O reminal desativa o repouso em modo concha e, como aplicativos GUI precisam de uma tela para desenhar, cria um display virtual no momento em que o Mac fica sem cabeça — para que o espelhamento de janelas continue funcionando sem nada conectado. Desative e tudo é desfeito.
O modo de tampa fechada é exclusivo para macOS; todo o resto abaixo funciona em macOS, Linux e Windows igualmente.
Configure em uma linha
curl -fsSL https://raw.githubusercontent.com/harshalgajjar/Reminal/main/install.sh | sh
reminal
No Windows (PowerShell):
irm https://raw.githubusercontent.com/harshalgajjar/Reminal/main/install.ps1 | iex
reminal
Essa é toda a configuração — um comando na máquina que você está deixando para trás. Todo o resto que você possui já é um cliente, porque o cliente é um navegador.
Alcance e dirija os aplicativos
Qualquer janela de aplicativo transmite ao vivo para o seu navegador — e você não apenas assiste, você dirige: cursor, clique e clique com botão direito, digitação, rolagem, arrastar, pinça para zoom. Ainda não está aberto? Inicie qualquer aplicativo instalado no host pelo menu Apps e depois dirija-o. Ou toque em Host → Ver desktop completo para executar a máquina inteira de uma vez. Em um telefone, a tela se torna um trackpad — seu Mac, totalmente prático, do seu bolso.
Captura real, sem edição. O telefone escolhe uma janela, digita nela — as palavras aparecem no aplicativo real no Mac — e então espelha o desktop inteiro. Captura nativa, transmitida peer-to-peer.
60 fps, de uma máquina que não está aqui
E nada nessas janelas parece streaming. Arraste, role um vídeo dentro dela, veja um build passar — continua fluido o tempo todo, em Wi-Fi de hotel ou em um telefone na rede celular. Sessenta quadros por segundo, 17 ms da tela dela para a sua.
H.264 pelo DataChannel da própria sessão — peer-to-peer, cerca de 2,6 Mbps. Visualizadores somente via relay recebem o mesmo vídeo a 30 fps.
Um terminal completo também — escaneie um QR e pronto
reminal imprime um ID de sessão, um PIN e um código QR. Escaneie-o, e seu telefone é um terminal completo na sua máquina — cor real, seleção de texto por toque, teclas modificadoras na tela. Sem redirecionamento de porta. Sem chaves para gerenciar. Nada para instalar no telefone; o navegador é o cliente.
O SSH mais rápido que você já configurou — porque não há nada para configurar.
Interaja com suas máquinas como se estivessem bem aqui
Coloque qualquer janela remota para fora no seu desktop e ela fica ali como uma janela de aplicativo própria — exceto que está rodando em outra máquina inteiramente. Alinhe um editor do seu MacBook, um terminal em uma máquina na nuvem e um painel do Mac mini em casa, e trabalhe em todos eles como se fossem locais.
Possua suas máquinas. Observe todas elas.
No momento em que seu trabalho abrange mais de uma máquina — um rack de servidores, ou agentes soltos em várias máquinas ao mesmo tempo — a parte difícil não é começar, é ver. reminal machines é uma visão ao vivo de tudo que você possui: cada máquina, cada terminal nela, o que está rodando agora, quem está assistindo, há quanto tempo está ocioso. Um agente rodando uma suíte de testes no seu laptop, corrigindo um CVE em uma VM na nuvem e rotacionando backups no Mac mini — ou apenas suas próprias sessões — tudo de relance. Está na CLI e no painel web Machines, onde você pode entrar em qualquer sessão, renomeá-la, criar uma nova ou encerrá-la em qualquer máquina.
Esse painel único funciona porque você possui as máquinas. Registre um dispositivo uma vez — reminal own imprime seu id, você cola sudo reminal add owner <id> em cada máquina — e a partir daí ele alcança todas as sessões sem PIN. A confiança é uma chave por dispositivo: revogável uma de cada vez, protegida por sudo para conceder, e o relay ainda só vê texto cifrado.
Seus agentes podem ver uns aos outros
reminal integrate
Um comando registra o servidor MCP do reminal com cada CLI de agente que você tem — Claude Code, Codex, Cursor, Gemini, OpenCode, Antigravity, Amp. A partir daí, seus agentes podem:
list_sessions— todas as sessões que você possui, nesta máquina e em cada máquina registradasearch_sessions— regex no scrollback do terminal ao vivo, em todas elasread_transcript— ler o terminal de outra sessão como texto simplessend_keys— digitar no PTY de outra sessão, entre máquinas
O que significa que um agente no seu laptop pode observar o que um agente na sua máquina de build está fazendo e responder a ele. Eles não precisam ser o mesmo agente, nem do mesmo fornecedor — Claude Code pode dirigir uma sessão do Codex. Não há protocolo para adotar e nada para integrar: o barramento é o terminal. Se roda em um PTY, pode ser lido e receber digitação.
Agentes também podem levantar a mão. add_note fixa um selo na janela real em questão — o editor, o navegador que está dirigindo — e isso chega ao seu telefone, onde você pode responder.
send_keysdigita teclas reais em um shell real em uma máquina que você possui. Ele só alcança máquinas que você mesmo registrou, e tudo o que faz é visível ao vivo no visualizador — mas trate-o com o respeito que você daria a qualquer ferramenta que pode digitar Ctrl+C no seu terminal.
Prefere sem MCP? Entregue a um agente um ID de sessão e PIN e ele se conecta como qualquer outro visualizador, a todas as máquinas que você compartilhou.
Compartilhe uma porta local com o mundo
reminal expose 3000 transforma o que estiver rodando em localhost em uma URL HTTPS pública — um servidor de desenvolvimento, um alvo de webhook, um build para mostrar a um cliente. Protegido por PIN por padrão (ou --public para abrir), para que você possa compartilhar o link sem implantar nada. É um ngrok embutido, na ferramenta que você já tem rodando.
Mova um arquivo entre quaisquer duas máquinas
reminal copy report.pdf em uma máquina imprime um código de uso único; reminal paste <code> em outra baixa o arquivo — Mac para Linux, Windows para Mac, laptop para servidor, qualquer lugar para qualquer lugar. Criptografado de ponta a ponta, sem nuvem, sem conta. AirDrop, para cada máquina que você possui.
A última coisa que você instalará em pé na frente do computador
Configure uma vez, pessoalmente — e então você nunca mais precisa sentar naquela máquina. De qualquer navegador você obtém seu terminal, qualquer janela, o desktop inteiro, um link público para uma porta local, arquivos de e para ela, até uma sessão ao vivo compartilhada com outra pessoa. Uma ferramenta, todo trabalho remoto.
Como funciona
Sua máquina disca para fora para um relay via WSS; visualizadores discam para fora para o mesmo relay. Nada nunca escuta na sua máquina. Tudo através do relay é criptografado de ponta a ponta — ele roteia texto cifrado que não consegue ler. Quadros de janela e desktop nem passam por esse caminho: eles viajam em uma conexão WebRTC direta entre navegador e host.
Você confia na Cloudflare para entregar pacotes — da mesma forma que confia no seu ISP com tráfego SSH. Nenhum dos dois pode ler o que você envia. A diferença: o reminal nunca abre sua máquina para a internet.
Tudo o que você obtém
Entre em uma sessão de qualquer lugar — telefone (escaneie o QR), qualquer navegador (abra a URL, digite o PIN), ou outro terminal (reminal --connect <id> --pin <pin>). Então:
Shell persistente e resilienteFeche o laptop, mude para o telefone, reconecte de outra cidade — seu shell está exatamente onde você o deixou, e a tela atual é pintada instantaneamente (um snapshot, sem avanço rápido lento). Queda de Wi-Fi, túnel, elevador? Reconexão automática com backoff, 2 MiB de scrollback intacto. |
Pareie com qualquer pessoaEnvie um ID de sessão e PIN para um colega por qualquer canal e ele entra no mesmo shell ao vivo — ou um espelho de janela — de um navegador. Sem conta, sem instalação, múltiplos visualizadores ao mesmo tempo. Ctrl+C encerra; não há nada para revogar. |
Sessões que sobrevivem ao seu terminalInicie um trabalho longo e feche a tampa — ele continua rodando. |
Terminal web sem instalaçãoUm terminal xterm.js completo está embutido no relay. Qualquer navegador é o cliente — telefone, iPad, laptop de trabalho bloqueado, PC de lobby de hotel. Pinça para zoom, seleção de texto com alças arrastáveis, teclas modificadoras na tela, ditado por voz, busca no scrollback. |
Arquivos, portas e pings
|
Seguro por construçãoSem portas abertas, ID de sessão + PIN efêmeros, AES-256-GCM de ponta a ponta com handshake X25519 autenticado por PIN que o relay não consegue quebrar offline. Ctrl+C e as credenciais desaparecem. Detalhes abaixo. |
Possua uma máquina, pule o PINRegistre um dispositivo como proprietário — |
Cada máquina, uma lista
|
Segurança
Construído para ser tão seguro quanto um SSH configurado corretamente — e mais seguro por padrão.
O SSH deixa a porta 22 aberta, armazena chaves de longa duração no disco e confia que você configure tudo corretamente. O reminal adota a abordagem oposta: nada para expor, nada permanente para roubar, criptografia de ponta a ponta.
| Camada | O que faz |
|---|---|
| Sem portas abertas | Sua máquina apenas inicia conexões de saída. Não há nada na rede para escanear, forçar ou explorar com zero-day. |
| Credenciais efêmeras | O ID da sessão e o PIN existem apenas enquanto o reminal estiver em execução. Ctrl+C e eles desaparecem para sempre. |
| Dispositivos do proprietário, revogáveis | Um dispositivo que você registra como proprietário conecta-se sem o PIN usando sua própria chave — um caminho de confiança separado do PIN efêmero, protegido pelo sudo para registro e revogável por dispositivo (ou auto-revogado de qualquer navegador). O relay ainda apenas roteia texto cifrado. |
| Dois fatores por design | Um invasor precisa tanto do ID da sessão (~1 trilhão de combinações) quanto do PIN de 6 dígitos. Saber apenas um é inútil. |
| Limitado por taxa pelo agente | Cada tentativa de PIN custa um handshake online completo com sua máquina, e o agente responde no máximo ~6 por minuto (rajada de 8, um token a cada 10s). Esgotar um PIN de 6 dígitos nesse ritmo leva meses — muito mais do que a vida útil de uma sessão. |
| Criptografia de ponta a ponta | AES-256-GCM com uma chave de sessão aleatória de 256 bits gerada a cada execução do agente. Distribuída a cada visualizador via handshake X25519 autenticado por PIN (estilo EKE) — o relay nunca vê a chave nem nada que possa ser forçado offline a partir dela. |
| Handshake com sigilo perfeito | Cada conexão WebSocket executa sua própria troca X25519 efêmera. Mesmo que um invasor futuro recupere o PIN, o texto cifrado gravado permanece ilegível. |
| Relay cego | Cloudflare Workers roteiam texto cifrado. Um relay que grava tráfego não consegue recuperar a chave de sessão offline — tentativas de PIN erradas são detectáveis apenas ao tentar um handshake online completo (uma tentativa por vez, limitado pelo throttle de troca de chaves do agente). |
| P2P em que você pode confiar | A sinalização WebRTC (SDP, ICE) viaja dentro do canal de sessão já criptografado, então o relay não pode adulterar impressões digitais DTLS — sem janela para man-in-the-middle. Os quadros no DataChannel são protegidos por DTLS de ponta a ponta. |
| TLS em trânsito | WSS / TLS em cada salto em produção. |
Uma exceção deliberada: os encaminhamentos de porta do reminal expose não são criptografados de ponta a ponta — o visitante é um navegador comum sem chave reminal, então esse tráfego passa pelo relay em texto puro (protegido por PIN, mas legível pelo relay). Todo o resto acima é E2E. Auto-hospede o relay se isso for importante para você.
Boas práticas: compartilhe o ID da sessão e o PIN por canais diferentes (envie o ID por e-mail, o PIN por SMS) · Ctrl+C ao terminar — as credenciais morrem instantaneamente · mantenha o cliente atualizado com o reminal upgrade.
Aprofundando: Arquitetura de segurança · Modelo de ameaças · Subprocessadores e tratamento de dados · Autoavaliação · Reportar uma vulnerabilidade
reminal vs SSH, de relance
O SSH foi projetado em 1995 — ele assume um IP estático, um roteador que você pode configurar e chaves que você mantém rotacionadas. O reminal não assume nada disso, então as compensações se alinham de forma diferente:
| reminal | SSH | |
|---|---|---|
| Tempo de configuração | Um comando | Chaves, configurações, encaminhamento de porta, firewalls |
| Porta de escuta | Nenhuma | TCP 22 exposta à internet |
| Credenciais | ID de sessão efêmero + PIN | Chaves permanentes no disco |
| Atrás de NAT / Wi-Fi de hotel | Simplesmente funciona | VPN ou host de salto necessário |
| Cliente necessário no visualizador | Nenhum — um navegador é o cliente | ssh + uma chave configurada por dispositivo |
| Amigável para celular | Escaneie o QR → entre | Sem cliente nativo |
| Sessão sobrevive à desconexão | O shell continua rodando, alterne entre dispositivos | Caia a conexão, perca seu trabalho (a menos que você o envolva em tmux) |
| Oscilações de rede | Reconexão automática, replay de scrollback | Write failed: Broken pipe |
| Aplicativos GUI | Espelhe e controle qualquer janela — ou a área de trabalho inteira | Encaminhamento X11, se você ousar |
| Tampa do laptop fechada, sem monitor | Modo de tampa fechada continua servindo em um display virtual | Apenas terminal |
| Se o laptop for roubado | Sessões já mortas | Chaves antigas ainda concedem acesso |
| Criptografia | Ponta a ponta através do relay | Ponta a ponta direta (se configurado corretamente) |
Execute seu próprio relay (grátis, uma vez)
O relay roda em Cloudflare Workers + Durable Objects. O nível gratuito lida com milhares de sessões por mês — e os quadros de janela vão peer-to-peer, então o tráfego pesado nunca o toca.
cd cloudflare
npm install
npx wrangler login
npm run deploy
Em seguida, copie o reminal.build.env.example para o reminal.build.env ignorado pelo git, coloque sua URL do workers.dev lá e execute o ./scripts/build.sh. Nenhuma edição de código-fonte é necessária. Guia completo em
cloudflare/README.md.
Desenvolvimento 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 testar contra um relay remoto sem recompilar, defina qualquer URL de tempo de execução; o reminal deriva sua contraparte automaticamente:
REMINAL_RELAY=wss://your-relay.example/ws ./dist/reminal
# or: REMINAL_WEB=https://your-relay.example ./dist/reminal
Referência
Suporte de plataforma
O espelhamento que você vê acima não é exclusivo do macOS — captura de janela e controle total (clique, digitação, rolagem, arrastar) funcionam em Linux/X11 e Windows também.
| Capacidade | macOS | Linux | Windows |
|---|---|---|---|
| Compartilhamento de terminal · sessões · arquivos · encaminhamento de porta | ✅ | ✅ | ✅ ConPTY |
Conexão do proprietário (sem PIN) · reminal machines | ✅ | ✅ | ✅ |
| Espelhamento e controle de janela e área de trabalho | ✅ ScreenCaptureKit — H.264 até 60 fps | ✅ X11 — wmctrl · xdotool · ImageMagick | ✅ Win32 — PrintWindow · SendInput |
| Modo de tampa fechada (display virtual automático) | ✅ | — | — |
Reinicialização rápida (reminal restart) | ✅ | ✅ | ✅ (sessões em primeiro plano convertem para segundo plano + visualizador anexado) |
A captura no Linux precisa de uma sessão X11 (ou Xwayland) — o Wayland nativo bloqueia entrada sintética, então ainda não é suportado. Apple Silicon, x86_64 e Windows ARM64 são todos suportados.
Notas do Windows
- Shell: as sessões abrem o PowerShell 7 (
pwsh) quando instalado, caso contrário o Windows PowerShell, caso contrário ocmd— defina o$env:SHELLpara substituir. Os terminais rodam através do ConPTY, a mesma API que o Windows Terminal usa, então cores, TUIs e redimensionamento se comportam como um console nativo. - Sem prompts de permissão: ao contrário da concessão de Gravação de Tela do macOS, o espelhamento de janela e a injeção de entrada não precisam de nada habilitado — funciona imediatamente.
- Prompt do firewall no primeiro espelhamento: quando um visualizador anexa pela primeira vez a um painel de janela/área de trabalho, o Firewall do Windows pergunta sobre o reminal — isso é o fluxo peer-to-peer direto (WebRTC) vinculando uma porta UDP, o mesmo prompt que qualquer aplicativo de videochamada recebe. Permitir habilita P2P; Cancelar também é aceitável — o streaming volta para o caminho do relay criptografado.
- Streaming: o Windows usa o caminho de captura JPEG (~5–15 fps). O pipeline H.264 de 60 fps é atualmente exclusivo do macOS.
- Espelhamento precisa de uma área de trabalho com login — uma máquina parada na tela de login (ou uma sessão de serviço) não tem janelas para capturar; o compartilhamento de terminal funciona independentemente.
- Atualizações e reinicialização rápida: o
reminal upgradesubstitui o exe no lugar (o que está em execução é renomeado para o lado), e oreminal restarttroca a quente o agente de uma sessão para o novo binário sem tocar no shell interno — o shell de cada sessão vive em um pequeno processo detentor de ConPTY, então o agente pode ser substituído sob ele (o PID da sessão muda, ao contrário do Unix). Uma sessão em primeiro plano reinicia convertendo: ela se move para o segundo plano e seu terminal se torna um visualizador anexado a ela — mesmo shell, mesmas teclas, Ctrl-] desanexa. O host em segundo plano também se reinicia automaticamente após uma atualização.
Comandos
| Comando | O que faz |
|---|---|
reminal [--name <name>] | Compartilhe esta sessão de terminal |
reminal new [name] | Crie uma nova sessão em segundo plano (destacada — sobrevive ao fechamento deste terminal) |
reminal list [filter] [-v] | Liste sessões, mais recentes primeiro; filtre por id/nome/cwd/título (--idle, --viewers, --headless) |
reminal attach [id|name] | Reconecte-se a uma sessão local como visualizador (sem argumento → seletor interativo) |
reminal connect <id-or-url> [pin] | Conecte-se a uma sessão remota do seu terminal (PIN solicitado se omitido) |
reminal rename [id|name] <new-name> | Renomeie uma sessão em execução (dentro de uma sessão: reminal rename <new-name>) |
reminal stop [id|name|port] | Pare a camada reminal — remove visualizadores, mantém seu shell/servidor em execução |
reminal kill [id|name] | Termine completamente uma sessão (mata o shell — irreversível) |
reminal prune [dur] [-y] | Mate sessões ociosas e sem visualização de uma vez (padrão ocioso ≥ 30m) |
reminal restart [--all] | Troque a quente o(s) agente(s) em execução para o binário mais recente — o shell permanece vivo |
reminal integrate [--remove] | Registre o servidor MCP do reminal com seus CLIs de agente (Claude Code, Codex, Cursor, Gemini, OpenCode, Antigravity, Amp) |
reminal mcp | Execute o servidor MCP no stdio — liste, pesquise, leia e digite em sessões em suas máquinas |
reminal expose <port> [--public] | Encaminhe uma porta HTTP local para uma URL pública (protegida por PIN por padrão) |
reminal send <file> | Envie um arquivo para cada visualizador conectado (o cliente web baixa automaticamente) |
reminal copy [--ttl <dur>] <file> | Ofereça um arquivo para coleta em qualquer lugar; imprime um código de uso único |
reminal paste <code> [dest] | Busque um arquivo oferecido pelo reminal copy em outra máquina |
reminal notify <message> | Envie uma notificação para os visualizadores (notificação do navegador na web) |
reminal connections | Liste os visualizadores atualmente anexados com o tempo de conexão |
reminal own | Imprima o id do proprietário deste dispositivo + a linha do add owner para colar em máquinas que você deseja possuir |
reminal add owner <id> [--label <name>] | Registre um dispositivo proprietário nesta máquina (precisa do sudo / um terminal de Administrador no Windows) — permite que ele conecte sem PIN |
reminal owners [rename|revoke|restore <id|label> …] | Liste / renomeie / revogue / restaure os dispositivos proprietários desta máquina |
reminal machines [rename <id|name> <new-name>] | Liste todas as máquinas que você possui e suas sessões ativas (o painel web Machines as gerencia) |
reminal info [id|name] [--all] [--qr] [--json] | Mostre detalhes de conexão — ID / PIN / URL / QR |
reminal qr [id|name] | Imprima apenas o QR de entrada (para uma segunda tela) |
reminal settings | Página de configurações: mantenha o Mac desbloqueado para controle remoto; modo de tampa fechada (sirva com a tampa fechada e nada conectado — desativa o sono do clamshell, cria automaticamente um display virtual enquanto sem cabeça) |
reminal doctor | Autodiagnóstico: versão, alcance do relay, terminal, shell |
reminal permissions | macOS: conceda Gravação de Tela ao reminal uma vez, para que sessões em segundo plano (+) possam espelhar janelas |
reminal completion <bash|zsh|fish|powershell> | Imprima um script de conclusão de shell |
reminal upgrade | Atualize para a versão mais recente |
reminal relay [port] | Inicie um relay local (apenas desenvolvimento) |
reminal version [--verbose] | Imprima a versão |
As sessões são resolvidas por id exato, nome exato, prefixo de id único ou substring única de nome / cwd / título — o reminal attach deploy simplesmente funciona.
Variáveis de ambiente
| Variável | Padrão | O que faz |
|---|---|---|
REMINAL_RELAY | Relay público upstream | URL base do WebSocket do relay; também deriva REMINAL_WEB quando não definido |
REMINAL_WEB | Web UI pública upstream | URL da interface web; também deriva REMINAL_RELAY quando não definido |
REMINAL_LOCAL | — | Defina como 1 para apontar tudo para localhost |
REMINAL_OWNERS_DIR | /etc/reminal (%ProgramData%\reminal no Windows) | Onde fica a lista de proprietários da máquina (o armazenamento de confiança controlado por admin) — sobrescreva para testes ou layouts incomuns |
REMINAL_NO_KEEP_AWAKE | — | Defina como 1 para permitir que o host durma enquanto o reminal roda (o padrão mantém o host acordado via caffeinate / systemd-inhibit / SetThreadExecutionState) |
REMINAL_TURN / REMINAL_TURN_USER / REMINAL_TURN_PASS | — | Servidor TURN opcional para espelhamento de janela P2P atrás de NATs hostis (ou REMINAL_TURN_CF_KEY + REMINAL_TURN_CF_TOKEN para TURN do Cloudflare). Sem um, espectadores sem furação de NAT permanecem no fallback do relay |
REMINAL_NO_CAPTURE_HELPER | — | Defina como 1 para forçar o caminho de captura de tela (pule o helper nativo ScreenCaptureKit) |
REMINAL_DEBUG | — | Defina como 1 para anexar a string de erro bruta às linhas de status, para diagnosticar problemas de conexão |
SHELL | $SHELL, depois testa /bin/zsh, /bin/bash, /bin/sh (Windows: pwsh → powershell → cmd) | Qual shell iniciar dentro da sessão |
Instala em ~/.local/bin/reminal (macOS/Linux) ou %LOCALAPPDATA%\Programs\reminal (Windows) — sem necessidade de sudo/admin. Apple Silicon, x86_64 e Windows ARM64. Compile a partir do código-fonte com ./scripts/build.sh (Go 1.25+, toolchain Swift no macOS para o helper nativo de captura); no Windows é um simples go build ./cmd/reminal.
Para um padrão personalizado persistente em builds locais, copie
reminal.build.env.example para reminal.build.env e defina
REMINAL_DEFAULT_RELAY e/ou REMINAL_DEFAULT_WEB. O arquivo local é ignorado
pelo git e é interpretado como dados KEY=VALUE inertes (não executado como código shell).
Os fluxos de release usam variáveis de repositório com os mesmos nomes, então
forks podem publicar seus próprios padrões; quando essas variáveis estão ausentes, os
padrões upstream permanecem intactos para que builds comuns de contribuidores e upstream
continuem funcionando.
Pronto para experimentar?
curl -fsSL https://raw.githubusercontent.com/harshalgajjar/Reminal/main/install.sh | sh
reminal
No Windows (PowerShell):
irm https://raw.githubusercontent.com/harshalgajjar/Reminal/main/install.ps1 | iex
reminal
Escaneie o QR — você está dentro. Sem cadastro, sem redirecionamento de porta, sem chaves no disco. Cerca de 30 segundos desta página até sua própria máquina, ao vivo no navegador.
Licença
reminal é duplamente licenciado sob AGPL-3.0. Usá-lo — pessoalmente ou
dentro de uma empresa, sem modificações — não exige nada de nós. Uma
licença comercial cobre a incorporação do reminal em um produto que você
distribui, ou a execução de uma cópia modificada como serviço. Veja
LICENSING.md para saber onde fica essa linha, e CLA.md
se quiser contribuir.
Construído por @harshalgajjar. Estrelas são apreciadas. Issues ainda mais.