HN Debrief

Show HN: Kage – Shadow any website to a single binary for offline viewing

  • Open Source
  • Developer Tools
  • Infrastructure
  • Web
  • Documentation

Kage is a Go tool for mirroring entire websites, not just saving a single page. It drives Chrome or Chromium, waits for client-side rendering, captures the final DOM, strips the original scripts, and writes out an offline-browsable copy. The author can also package that result as a ZIM archive for Kiwix or as an executable that serves the archive locally. That made the core framing click for people who first assumed this was just another "Save As" wrapper or a SingleFile clone. The useful comparison that stuck was "HTTrack for modern JavaScript sites".

If you need offline copies of modern documentation or internal web content, this is worth watching as a browser-rendered alternative to wget or HTTrack. For sharing, favor plain HTML folders or ZIM over the executable mode, and expect rough edges around auth, crawl controls, and very large sites.

Discussion mood

Positive and curious. People like the idea of a modern offline mirror for JavaScript-heavy sites, especially for docs and wikis, but they immediately zeroed in on missing crawl controls, auth support, packaging trust, and how it compares with older archiving tools.

Key insights

  1. 01

    Rendered snapshots solve the Save As problem

    Capturing the DOM after the page finishes rendering is the key distinction from browser "Save As" and basic mirroring tools. A normal save often preserves a thin HTML shell that still depends on remote APIs or the original origin, so it breaks offline. Kage is more useful when the page is built by JavaScript and you want the state a human actually saw, not the source the server first sent.

    Use this approach for SPA documentation, dashboards, and app-generated content where a raw HTML download is not the real page. If the target is already static, simpler tools will be easier to trust and maintain.

      Attribution:
    • dmazzoni #1
    • nmstoker #1
    • tamnd #1
    • maxloh #1
  2. 02

    ZIM support is the practical distribution path

    The archive format that made people perk up was ZIM, not the self-executing binary. Kiwix already gives you mature readers across desktop and mobile, which turns Kage from a neat crawler into something you can actually hand to nontechnical users for offline docs or wiki access. That also anchors the project in an existing ecosystem instead of creating yet another custom archive format and reader.

    If you plan to distribute offline content beyond your own machine, build around ZIM and Kiwix first. It lowers rollout friction and avoids security objections that come with asking people to run a downloaded executable.

      Attribution:
    • tamnd #1 #2
    • throwaway219450 #1
  3. 03

    A local server is not optional for many mirrors

    Serving the archive over HTTP is not just an implementation quirk. Modern browsers restrict parts of the web platform under file URLs, especially around origin handling and JavaScript modules. Even when simple relative assets still load, a whole mirrored site becomes much more brittle if you expect users to open pages directly from disk.

    Plan on shipping a tiny local server or a format like ZIM that already has a reader. Do not assume a folder of HTML will behave the same way under file:// as it did on the web.

      Attribution:
    • wolttam #1
    • tamnd #1
    • doctoboggan #1
    • dmazzoni #1
    • rzzzt #1
    • danielheath #1
  4. 04

    Crawl controls are the missing operational feature

    The biggest gap is not rendering quality. It is operational restraint. People immediately asked for throttling, media skipping, and subset selection because doc sites and app portals can balloon into huge crawls and hammer origin servers. Without those controls, the tool is fine for personal experiments but risky for routine use inside a company or against third-party properties.

    Wait for rate limits, allowlists, and asset filters before turning this into a team workflow. If you need that today, reach for more mature crawlers and treat Kage as an interesting renderer rather than a complete archiving system.

      Attribution:
    • gregwebs #1
    • tamnd #1 #2
  5. 05

    Readable archives and archival-grade capture are different jobs

    People drew a useful line between a clean offline reading copy and a high-fidelity preservation record. Kage optimizes for the first by saving rendered pages with scripts removed. For replaying exactly what was served, including modern protocol behavior and things like WebSockets, commenters pointed toward WARC, mitmproxy-style interception, Browsertrix, and Grab-site. That is a different bar than "I can browse this doc set on a plane."

    Pick your tool based on the preservation standard you actually need. For compliance, research, or future replay, keep a capture format alongside any cleaned offline mirror.

      Attribution:
    • nikisweeting #1
    • sanqui #1 #2
    • tamnd #1

Against the grain

  1. 01

    Executable archives create a trust problem

    Packaging a website as a runnable binary sounds convenient, but it runs straight into how people and endpoint security treat unknown executables. One commenter flatly rejected binaries as a storage format, and another reported Windows Security flagging the sample executable. That shifts the feature from clever distribution trick to niche convenience for trusted internal use.

    Do not make the executable mode your default handoff format. Use it only in controlled environments and provide HTML or ZIM for everyone else.

      Attribution:
    • cynicalsecurity #1
    • tamnd #1
    • daviding #1
  2. 02

    The README hurt credibility

    Two comments said the README reads like AI-generated filler and that it reduced trust in the project. For an archiving tool that already asks users to run browser automation and sometimes a generated binary, rough presentation is not cosmetic. It directly affects whether technical users believe the implementation is careful.

    If you ship infrastructure or security-adjacent tooling, clean up the docs before broader adoption. Presentation quality changes whether teams will even start a code review.

      Attribution:
    • sneak #1
    • chinnyys #1

In plain english

Chromium
The open source browser project that Google Chrome is built on.
DOM
Document Object Model, the browser's programming interface for HTML pages and UI elements.
HTTrack
A long-running website copier that downloads sites for offline browsing, mainly designed around older web patterns.
Kiwix
An offline reader application that opens ZIM archives on desktop and mobile devices.
mitmproxy
A tool that sits between a client and server to inspect and record web traffic.
SingleFile
A tool and browser extension that saves a web page as one self-contained HTML file with embedded assets.
WARC
Web ARChive, a standard file format for storing web crawl data and HTTP exchanges for preservation and replay.
WebSockets
A web protocol for keeping a live two-way connection open between a browser and a server.
ZIM
A file format for storing whole websites or knowledge bases for offline reading, commonly used by Kiwix.

Reference links

Archiving and mirroring tools

  • SingleFile
    Referenced as a robust single-page offline saver and point of comparison for fidelity and packaging.
  • single-file-cli
    Mentioned as the command-line version of SingleFile powered by Puppeteer.
  • HTTrack
    Cited as the classic website mirroring tool that Kage resembles for older sites.
  • grab-site
    Suggested as an alternative crawler used in preservation work.
  • gwtar
    Brought up as a related prior art for packaging websites.

Offline reading formats and apps

Capture and demo tooling

  • ascii-gif
    Used by the author to generate the demo GIF shown in the repository.
  • Kage demo tape
    Contains the script used to render the project demo.
  • VHS
    Identified as the underlying terminal demo recording tool wrapped by ascii-gif.
  • asciinema
    Suggested as a different way to share terminal sessions as text-based recordings.
  • LiceCAP
    Recommended for compact screen-to-GIF capture on macOS and Windows.

Related projects and formats