TERMINAL//NG: a Plugged Ninja lança um cyberdeck SSH para operadores Linux — open source, com IA e parsers ao vivo
Novo projeto MIT combina terminal xterm.js completo, dashboard visual que interpreta a saída dos comandos em tempo real, copilot de IA multi-provedor (Claude, Gemini, OpenAI, Ollama local), SFTP com editor embutido, browser interno via SSH, proteção contra comandos destrutivos e 20 temas — tudo num único binário Node.
Resumo: O TERMINAL//NG é o novo projeto open source da Plugged Ninja: um cliente SSH pela web que parece um cyberdeck saído de um cyberpunk RPG — só que profundamente funcional. Ele une um terminal xterm.js completo, um dashboard visual que interpreta a saída de comandos em tempo real, um copilot de IA (Claude, Gemini, OpenAI, modelos locais), navegador SFTP com editor embutido, browser interno que roda até via SSH, proteção contra comandos destrutivos, 20 temas e trilha sonora sintetizada. Tudo num único binário Node, sem serviços externos, licença MIT.
O que é o TERMINAL//NG
Quem administra Linux passa a vida em três abas do navegador e cinco janelas de terminal ao mesmo tempo. O TERMINAL//NG — “SSH cyberdeck for Linux operators”, como o próprio README define — resolve isso empacotando terminal, browser, editor de arquivos, dashboard de saúde e assistente de IA numa única interface web, tudo pendurado na mesma sessão SSH. É a resposta que a comunidade brasileira de infra estava dando desde o Termius fechar recursos importantes atrás de paywall e o Warp virar puro AI-first para desenvolvedor Mac.
O projeto acaba de ser publicado no GitHub sob a organização PluggedNinja/terminal-ng, com licença MIT, stack Vite + React no frontend e Node com Express, ws e ssh2 no backend. Não há banco de dados: tudo mora em pequenos arquivos JSON dentro de server/data/. Não há serviço externo obrigatório: sobe em npm start, escuta em uma única porta (3001 por padrão) e pronto — UI, API REST e WebSocket SSH compartilham a mesma origem, o que elimina uma classe inteira de bugs chatos de proxy reverso.
A estética entrega a promessa do nome: fundo escuro, tipografia monoespaçada com brilho neon âmbar-laranja, HUD com CPU/RAM/portas na base, painel de sessões salvas à esquerda, painel de agente IA à direita. É bonito de doer. Mas o que impressiona não é o visual — é a ideia por trás.
A grande sacada: parsers ao vivo
Aqui está o diferencial que ninguém mais entrega: o painel Diag. Você roda um comando comum — ss -tulpn, ip addr, df -h, ps aux, vmstat 1, journalctl -f, ls -la /etc/apache2/sites-enabled/ — e o TERMINAL//NG detecta o formato de saída e monta automaticamente uma visualização em cima daquilo, sem que você troque de janela, sem plugin, sem tela extra.
- Rede:
ss/netstat,ip addr/route,iptables/nftviram tabela sortável com destaque para portas escutando e conexões estabelecidas. - Performance:
vmstat,iostat,mpstatdesenham sparklines ao vivo enquanto rodam. Você vê o gargalo de I/O acontecendo em tempo real. - Logs:
journalctl,dmesg,auth.log,syslog, logs do Apache e Nginx ganham um severity chart (FATAL/ERROR/WARN/INFO/DEBUG) e destaque colorido. Otail -fé parseado ao vivo. - Disco & serviços:
df,lsblk,fdisk, LVM,du,smartctl,systemctlesystemd-analyzeganham visualização de partições, uso e árvore de dependência. - Arquivos: um
ls -lavira tabela clicável. Arquivos.conf,.yaml,.tomlabrem direto no editor embutido.
Some a isso o error hints: quando um comando falha por permissão negada, disco cheio, porta ocupada ou DNS quebrado, o painel aponta exatamente qual parâmetro você digitou errado. A tradução de exit codes avisa que 137 é OOM killer e 143 é SIGTERM. E o config helper mostra o valor default e a descrição da diretiva embaixo do seu cursor enquanto você edita sshd_config, nginx.conf, fstab, sysctl.conf, postgresql.conf, haproxy.cfg, netplan, docker-compose.yml, .env, crontab — este último traduzido para linguagem natural com as próximas execuções calculadas. É o tipo de assistência que operador sênior demorou dez anos para incorporar como reflexo, entregue a quem está começando na primeira semana.
O copilot de IA — sem lock-in
A parte do AI copilot respeita o operador. Nada é enviado a modelo externo por padrão. Você escolhe o provedor em Settings → IA: Claude da Anthropic, Gemini do Google, OpenAI, ou qualquer API compatível com OpenAI — Groq, OpenRouter, DeepSeek, Mistral, Ollama local ou endpoint customizado. Dá até para logar via ChatGPT (Codex OAuth). As chaves são armazenadas criptografadas no perfil do usuário e nunca são reexibidas.
O copilot opera em três modos: chat ancorado na saída recente do terminal; Auto-Pilot (⚡) que explica todo comando executado — somente quando ativado; e o Agent mode, que roda diagnósticos read-only rumo a um objetivo declarado e reporta achados + correções sugeridas, com níveis de bloqueio de segurança e trilha de auditoria completa. Fora da caixa, sem chave configurada, o sistema roda em modo heurístico local — dá para virar operacional imediato numa VM isolada sem contato com nuvem.
“O AI Auto-Pilot só manda a saída de comando pro modelo que você configurou quando você liga a chave.” — README do projeto
Esse tipo de contrato explícito é raro. Ferramenta ganha adoção em SOC/NOC brasileiro justamente por respeitar essa fronteira. Ninguém quer que a saída de journalctl -u strongswan em um servidor de VPN corporativo vá parar num prompt público.
Segurança levada a sério
O projeto ostenta um SECURITY-REVIEW.md — coisa rara em ferramenta pessoal e sinal de maturidade. Pontos que valem sublinhar:
- Sessões em cookie HttpOnly: o JWT nunca vai para
localStorage. Isso mata a exfiltração via XSS. - Segredos criptografados em repouso: senhas SSH salvas, tokens ChatGPT OAuth e chaves de IA usam AES-256-GCM com a chave
TNG_ENC_KEY. Salvar senha SSH continua desligado por padrão. - Verificação TOFU de host key: confia na chave do servidor no primeiro contato e recusa se ela mudar — defesa clássica contra MITM.
- Anti-SSRF no browser embutido e no fetch via SSH: bloqueia loopback, ranges privados e o famigerado
169.254.169.254(metadata de nuvem). - HTTP endurecido: Content-Security-Policy ativa, CORS restrito, rate-limit de login em 10 tentativas por 15 minutos por IP, senhas mínimas de 12 caracteres.
- Comandos destrutivos com confirmação:
rm -rf /etc,mkfs,dd of=/dev/sda, fork bomb,chmod -R 777 /exigem confirmação modal antes de executarem. E — importante —rm -rf node_modulesnão é bloqueado. O time acertou a linha entre paranoia útil e frustração inútil.
Em NODE_ENV=production, o backend se recusa a subir se JWT_SECRET, TNG_ENC_KEY e ADMIN_PASSWORD não estiverem fortes (mínimo 32 caracteres nas duas primeiras, mínimo 12 na senha do admin e proibição explícita de “admin”). Isso previne o clássico “deployei o CTF acidentalmente com senha padrão em produção” que todo mundo já viu em relatório de bug bounty.
Os recursos que ninguém pediu, mas todo mundo vai adorar
- Health check em um clique: dispara uma bateria read-only (uptime vs cores, RAM/swap, disco, serviços quebrados, top processos, portas escutando) em um canal SSH secundário — o seu terminal principal fica livre para trabalhar.
- SFTP com drag-and-drop: upload, download, mkdir, rename, delete recursivo, chmod visual e editor de texto inline com busca, find/replace e Ctrl+S. Fallback automático para
sudoquando o arquivo pertence ao root e o shell está elevado. - Browser embutido: com dois modos — proxy no backend (strippa headers X-Frame-Options e CSP frame-ancestors para embutir dashboards) ou via SSH, usando
curlno host remoto para alcançar painéis internos que só o servidor enxerga. Isso é ouro para chegar num Grafana atrás de VPN sem abrir sessão gráfica. - Multi-janela e multi-aba: layouts grid, stack e cascade, arrastar abas entre janelas.
- Vault por usuário: hosts salvos com label, cor e senha opcional. Quick Connect para uma sessão descartável.
- Cliente móvel com input por voz: sim, é possível debugar SSH pelo celular com voz. Aceito qualquer aposta que isso vai virar meme de operações noturnas.
- 20 temas, incluindo um claro pra quem não quer dor de cabeça de tarde — Dracula, Nord, Gruvbox, Tokyo Night, Monokai, Daylight etc.
- Trilha sonora sintetizada: Synthwave na tela de login que cross-fade para Lo-Fi Chill depois do login. Cinco faixas selecionáveis. Toggles independentes para sons/animações.
- UI multilíngue: EN, PT-BR, ES, 中文.
Por que importa para operações no Brasil
Time de infra brasileiro convive com uma pilha comum: Ubuntu ou Debian em VPS, Apache ou Nginx à frente, Postfix/Dovecot para e-mail, PostgreSQL ou MySQL, tudo administrado por SSH. As diretivas que o config helper do TERMINAL//NG conhece — sshd_config, nginx, fstab, sysctl, postgresql.conf, haproxy, netplan, docker-compose, .env, crontab — cobrem praticamente 90% do dia a dia. Adicione o parser de auth.log com severity chart e você tem um triage rápido de tentativas de brute-force sem sair do terminal. Adicione o Agent mode em cima de um Ollama local (Llama 3 ou Qwen no servidor de laboratório) e você tem um assistente que não sai da sua rede — algo raro num mundo dominado por SaaS.
Para operadoras e provedores de hospedagem regionais, o TERMINAL//NG também abre caminho para um painel de suporte tipo “webmin de operador” moderno. Já vimos organizações brasileiras montando cyberdecks internos em cima de tmux + tui-forks — o TERMINAL//NG entrega isso pronto e bonito, e como é MIT, dá para fazer fork e customizar.
Como testar hoje
Cinco linhas e você está dentro:
git clone https://github.com/PluggedNinja/terminal-ng.git
cd terminal-ng
cp .env.example .env # gere segredos fortes: node -e "console.log(require('crypto').randomBytes(48).toString('base64url'))"
npm install
npm start # sobe UI + API + WS SSH na porta 3001
Abra http://localhost:3001, entre com o admin seedado, cadastre seu host preferido no vault e comece a testar. Rode um ss -tulpn, journalctl -f, iostat 1 e veja o painel Diag reagir em tempo real. Configure sua chave da API no Settings e experimente o Agent mode em um servidor de laboratório.
Riscos e limitações
Sendo justo: o projeto é novo. No momento em que esta matéria foi publicada, o repositório mostra dois commits, zero stars, zero releases marcadas. O backend expõe muita funcionalidade — SSH, SFTP, proxy web, brokering de IA — o que é uma superfície de ataque significativa se você deixar exposto à internet sem VPN, HTTPS reverso e MFA. A recomendação da própria doc é clara: use com CORS restrito e origens conhecidas, e nunca exponha sem NODE_ENV=production e segredos fortes. Como toda ferramenta de operações, deploy inseguro é a única forma de ela virar sua ruína.
Também vale considerar: recursos como Agent mode e Auto-Pilot podem, se mal configurados, mandar saída sensível para modelo de terceiros. O contrato explícito da UI resolve isso, mas exige disciplina. Em ambiente regulado (bancário, saúde, jurídico), a primeira coisa é apontar o AI provider para um Ollama local ou desligar o copilot.
Cenário / o que esperar
Ferramentas como Warp, Tabby e Termius mostraram que existe apetite grande por terminais modernizados. O que separava esses produtos de uma adoção universal era: lock-in de nuvem, modelo de negócio SaaS e foco de desenvolvedor macOS. O TERMINAL//NG entrega essencialmente a mesma proposta — talvez mais rica na parte de parsing de saída — sem nenhum desses três pontos. É self-hosted, é MIT e é voltado ao operator, não ao desenvolvedor front-end. Isso o coloca num nicho quase vazio: administradores Linux que querem interface bonita e soberania sobre seus dados. Se o projeto ganhar tração e uma pequena comunidade de plugins, tem tudo para virar o “Portainer do SSH” — a comparação é generosa mas não absurda.
Análise SWOT
- Cobertura de casos de uso — terminal, SFTP, editor, browser, IA — em uma UI só
- Parsers ao vivo com error hints e config helper
- MIT + zero dependência de nuvem
- Segurança bem pensada: HttpOnly, AES-256-GCM, TOFU, anti-SSRF
- Multi-provedor de IA, incluindo Ollama local
- Projeto muito novo: dois commits, sem releases
- Superfície de ataque ampla exige deploy cuidadoso
- Sem banco — escala limitada a instalação individual/equipe pequena
- Documentação ainda enxuta em pontos operacionais
- Adoção em provedores brasileiros de hospedagem como painel de operador
- Ecossistema de plugins para parsers customizados (Postfix, Dovecot, WHM)
- Integração com secrets managers (Bitwarden, Vault) para o vault de hosts
- Modo multi-usuário com RBAC para NOC/SOC
- Concorrência de Warp e Tabby com backing corporativo
- Risco de exposição pública indevida do backend
- Mudanças de política de API dos provedores de IA
- Dificuldade de sustentar o projeto sem sponsors
Conclusão prática
Se você opera Linux por SSH — seja um único VPS pessoal, seja um cluster de 500 hosts — o TERMINAL//NG merece meia hora do seu dia. Suba num laboratório, plugue seus servidores mais próximos e sinta na pele o que “parser ao vivo” faz na sua rotina. Os ganhos aparecem na primeira sessão: você para de digitar man iostat, para de decorar diretivas de sysctl, para de alt-tabar para o Grafana só para ver load average.
É um projeto brasileiro (feito pela Plugged Ninja) que ombreia com o que há de melhor no exterior em UX de terminal — e faz isso sem SaaS, sem lock-in, sem “cadastre seu cartão para experimentar”. Bota estrela no repo, testa, abre PR. Ferramentas assim não aparecem toda semana.






