Kage, a command-line archiving tool published on GitHub, offers a way to preserve websites for offline reading after modern pages have finished rendering. It uses headless Chrome to load each page, waits for the displayed document to settle, records the resulting DOM, removes JavaScript and rewrites downloaded stylesheets, images and fonts to local paths. The result is a collection of static HTML files that can be opened without a network connection.

That sequence distinguishes Kage from a browser’s basic save command. A page that initially arrives as a thin shell may depend on scripts to produce the material a reader sees. Kage lets those scripts run during capture, then excludes them from the saved copy. Because the finished archive runs no scripts, features that depend on live code are not preserved as interactive services; the tool is aimed at retaining the rendered reading experience and its local assets.

Its clone command performs a breadth-first crawl. According to the project documentation, it reads `robots.txt`, uses `sitemap.xml` as an input and remains on the starting host unless the operator changes that behavior. Pages resolving to the same output file are fetched once, even when their URLs differ by protocol or a trailing slash. An interrupted crawl records its position so it can resume, while separate options refresh an existing capture or begin again.

Kage can serve a mirrored folder through a small local web server, which preserves link and asset resolution more faithfully than opening individual files directly. It can also consolidate the folder into a ZIM archive, the documented format used by the Kiwix offline-content ecosystem. Kage’s ZIM files can be opened in compatible desktop and mobile readers. The generated archive omits the indexing data that enables search across the contents of some Kiwix packages.

A second packing mode joins the archive to a Kage executable. Running that file serves the captured site without requiring the recipient to install Kage or a ZIM reader. The base executable is platform-specific and adds about 13 MiB before the archived content. Builders can choose a base for another operating system, and an app option can produce a more conventional double-clickable experience. The project also describes deterministic packaging, meaning the same mirror should produce an identical file suitable for checksums and caches.

Chrome or Chromium is required for capture. Kage can locate a system installation, accept an explicit browser path, or run from a container image that bundles Chromium. Its design therefore trades the simplicity of a raw downloader for an actual browser rendering pass, followed by a deliberately inactive archive intended to remain useful when the original page or its scripts are no longer available.