kage (影, 'sombra') é uma ferramenta de linha de comando open-source (MIT), escrita inteiramente em Go, que clona um site inteiro em uma pasta simples de arquivos .html com todos os scripts removidos. Ela controla o Chrome headless página por página, espera a página estabilizar, tira um snapshot do DOM renderizado, apaga todas as tags script, manipuladores de eventos e URLs javascript:, e baixa CSS, imagens e fontes reescritos para caminhos locais relativos. Os comandos abrangem clone, serve, pack e open; um espelho pode ser condensado em um arquivo ZIM (o formato aberto por trás do Kiwix) ou em um binário autocontido de cerca de 13 MiB mais o conteúdo, que serve o site offline sem nada instalado, com uma build opcional de desktop --app e uma build webview que abre em uma janela nativa. É distribuído como um contêiner ghcr com Chromium embutido, além de pacotes Homebrew, Scoop, apt e dnf.
A aposta
Os usuários querem sites inteiros, não páginas isoladas: renderizar com o Chrome headless, capturar o DOM que uma pessoa vê, remover todo script e manter o resultado navegável offline.
Duc-Tam Nguyen (tamnd) criou o kage a partir da falha familiar do 'Salvar como': meses depois, uma página salva abre em branco, mostra um spinner infinito ou ainda tenta se comunicar com um servidor de analytics morto. Ele descreveu a página como algo que nunca é realmente seu — um cliente fino para o JavaScript de outra pessoa — e lançou a ferramenta como um Show HN em 2026-06-14 com o slogan 'Shadow any website to a single binary for offline viewing'.
A thread decolou com 712 pontos e 141 comentários. Os comentaristas compararam o kage ao SingleFile e perguntaram como ele diferia do Salvar como; Nguyen esclareceu que o kage espelha um site inteiro com todas as suas subpáginas — seu exemplo foi todos os ensaios de Paul Graham para leitura offline — enquanto o SingleFile empacota uma única página. Ele também mencionou uma ambição guarda-chuva maior: construir um 'Google do zero' open-source com camadas de crawler, indexador, armazenamento e serving. O Gigazine cobriu o kage em inglês em 2026-07-25, percorrendo um clone via Docker do gigazine.biz, o empacotamento em ZIM e um visualizador Windows em binário único de 24,4 MiB construído a partir da versão 0.3.10.
Em 2026-09-02, o kage continua sendo um projeto open-source independente, licenciado sob MIT, sem empresa nem financiamento; o repositório documenta instalações por gerenciadores de pacotes, um contêiner com Chrome embutido e uma suíte de testes completa, incluindo testes ponta a ponta conduzidos pelo Chrome, e o site de documentação kage.tamnd.com continua a crescer.
O Salvar como produz cópias que ainda tentam se comunicar com a origem ou renderizam em branco quando a marcação é construída por JavaScript em tempo de execução.
O SingleFile resolveu páginas isoladas, deixando o espelhamento de sites inteiros — o caso de uso real de arquivamento — para ferramentas menos fiéis.
O Chrome headless permite que o espelho capture o que uma pessoa vê antes de qualquer JavaScript ser removido.
Formatos abertos como o ZIM mantêm o arquivo legível por outras ferramentas (Kiwix) em vez de prender os usuários ao projeto.
Um binário autocontido significa que o destinatário não precisa de nada instalado para ler o espelho.
Renderize primeiro, remova depois: capture o que uma pessoa vê, então remova o runtime, e uma cópia do 'Salvar como' se torna um artefato durável que qualquer um pode abrir offline.
Em 2026-09-02, o kage continua sendo um projeto MIT independente, sem empresa nem financiamento. O desenvolvimento está ativo: o crawler lê o robots.txt, parte do sitemap.xml, retoma execuções interrompidas e busca cada URL uma única vez; o empacotamento é determinístico e os caminhos relativos ao espelho são mapeados para o arquivo. A automação de releases entrega binários multiplataforma, pacotes, um contêiner com Chrome embutido, SBOMs e assinaturas. O autor vincula o kage a uma pilha de busca open-source maior. Trade-offs conhecidos: o rastreamento precisa de Chrome/Chromium, os pacotes ZIM omitem o índice de texto completo do Kiwix, e um binário acrescenta cerca de 13 MiB antes do conteúdo.
CONFIRA AS EVIDÊNCIAS
As fontes
- tamnd/kage: Shadow any website for offline viewing, with the JavaScript stripped out GitHub · github.com
- Show HN: Kage - Shadow any website to a single binary for offline viewing Hacker News · news.ycombinator.com ·
- 'kage' removes JavaScript from web pages, saves the entire site locally, and allows you to view it offline Gigazine · gigazine.net ·
- About - Duc-Tam Nguyen tamnd.github.io · tamnd.github.io