kage (影, „Schatten“) ist ein quelloffenes (MIT), reines Go-Kommandozeilenwerkzeug, das eine gesamte Website in einen einfachen Ordner mit .html-Dateien klont, aus denen jedes Skript entfernt wurde. Es steuert pro Seite Headless Chrome an, wartet, bis sich die Seite beruhigt hat, erstellt einen Schnappschuss des gerenderten DOM, löscht alle Script-Tags, Event-Handler und javascript:-URLs und lädt CSS, Bilder und Schriftarten herunter, wobei die Verweise auf relative lokale Pfade umgeschrieben werden. Die Befehle umfassen clone, serve, pack und open; ein Spiegel kann in ein ZIM-Archiv (das offene Format hinter Kiwix) oder in eine eigenständige Binärdatei von etwa 13 MiB plus Inhalt zusammengefasst werden, die die Website offline bereitstellt, ohne dass etwas installiert werden muss, mit einem optionalen --app-Desktop-Build und einem Webview-Build, der sich in einem nativen Fenster öffnet. Es wird als ghcr-Container mit gebündeltem Chromium sowie als Homebrew-, Scoop-, apt- und dnf-Paket ausgeliefert.
Nutzer wollen ganze Websites, nicht einzelne Seiten: mit Headless Chrome rendern, das DOM als Schnappschuss festhalten, das ein Mensch sieht, jedes Skript entfernen und das Ergebnis offline durchsuchbar halten.
Duc-Tam Nguyen (tamnd) baute kage aus dem vertrauten Scheitern von „Speichern unter“ heraus: Monate später öffnet sich eine gespeicherte Seite leer, zeigt einen endlosen Ladekreisel oder telefoniert noch immer mit einem toten Analytics-Server nach Hause. Er beschrieb die Seite als nie wirklich die eigene – ein Thin Client für das JavaScript von jemand anderem – und veröffentlichte das Werkzeug am 14.06.2026 als Show HN mit dem Slogan „Shadow any website to a single binary for offline viewing“.
Der Thread schlug ein mit 712 Punkten und 141 Kommentaren. Kommentatoren verglichen kage mit SingleFile und fragten, worin es sich von „Speichern unter“ unterscheide; Nguyen stellte klar, dass kage eine gesamte Website mit allen ihren Unterseiten spiegelt – sein Beispiel waren alle Essays von Paul Graham zum Offline-Lesen –, während SingleFile eine einzelne Seite packt. Er erwähnte außerdem eine größere übergreifende Ambition: den Aufbau einer quelloffenen „Google from scratch“ mit Crawler-, Indexer-, Speicher- und Auslieferungsschichten. Gigazine berichtete am 25.07.2026 auf Englisch über kage und führte einen Docker-Klon von gigazine.biz, das ZIM-Packen und einen eigenständigen Windows-Viewer als einzelne Binärdatei von 24,4 MiB durch, der aus dem Release 0.3.10 gebaut wurde.
Stand 02.09.2026 ist kage weiterhin ein unabhängiges, MIT-lizenziertes Open-Source-Projekt ohne Unternehmen oder Finanzierung; das Repository dokumentiert Installationen über Paketmanager, einen Container mit gebündeltem Chrome und eine vollständige Testsuite einschließlich Chrome-gesteuerter End-to-End-Tests, und die Dokumentationsseite kage.tamnd.com wächst weiter.
„Speichern unter“ erzeugt Kopien, die noch nach Hause telefonieren oder leer rendern, wenn das Markup zur Laufzeit durch JavaScript aufgebaut wird.
SingleFile löste einzelne Seiten, sodass das Spiegeln ganzer Websites – der eigentliche Archivierungsanwendungsfall – weniger originalgetreuen Werkzeugen überlassen blieb.
Headless Chrome ermöglicht es dem Spiegel, festzuhalten, was ein Mensch sieht, bevor jegliches JavaScript entfernt wird.
Offene Formate wie ZIM halten das Archiv für andere Werkzeuge (Kiwix) lesbar, statt Nutzer an das Projekt zu binden.
Eine eigenständige Binärdatei bedeutet, dass der Empfänger nichts installiert haben muss, um den Spiegel zu lesen.
Erst rendern, dann entfernen: Halte als Schnappschuss fest, was ein Mensch sieht, entferne dann die Laufzeitumgebung, und aus einer „Speichern unter“-Kopie wird ein dauerhaftes Artefakt, das jeder offline öffnen kann.
Stand 02.09.2026 ist kage weiterhin ein unabhängiges MIT-Projekt ohne Unternehmen oder Finanzierung. Die Entwicklung ist aktiv: Der Crawler liest robots.txt, nimmt sitemap.xml als Ausgangspunkt, setzt unterbrochene Läufe fort und ruft jede URL nur einmal ab; das Packen ist deterministisch, und spiegelrelative Pfade werden in das Archiv abgebildet. Die Release-Automatisierung liefert Multi-Plattform-Binärdateien, Pakete, einen Container mit gebündeltem Chrome, SBOMs und Signaturen. Der Autor verknüpft kage mit einem größeren quelloffenen Such-Stack. Bekannte Kompromisse: Das Crawlen benötigt Chrome/Chromium, ZIM-Pakete lassen den Volltextindex von Kiwix aus, und eine Binärdatei fügt vor dem Inhalt etwa 13 MiB hinzu.
DEN BELEGEN FOLGEN
Die Quellen
- 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