Four commands: clone fetches a site into an offline folder, serve previews
one, pack collapses a mirror into a single file, and open serves a packed
file. Run kage <command> --help for the canonical, up-to-date list.
kage clone
kage clone <url> [flags]
Renders each page in headless Chrome, strips all JavaScript, localises CSS,
images, and fonts, and writes a browsable mirror to <out>/<host>/.
Output
Flag
Default
Meaning
-o, --out
$HOME/data/kage
Output root; the mirror lands in <out>/<host>/
--reserved
_kage
Reserved directory name for assets and crawl state
-f, --force
false
Delete any existing mirror for the host before crawling
--refresh
false
Re-render every page in place to pull in changed content
--no-resume
false
Do not read or write resume state
Scope
Flag
Default
Meaning
-p, --max-pages
0
Stop after N pages (0 = unlimited)
-d, --max-depth
0
Link-follow depth cap (0 = unlimited)
--scope-prefix
Only crawl pages whose path starts with this prefix
--subdomains
false
Treat subdomains of the seed host as in scope
--exclude
Path prefixes to skip (repeatable)
--traversal
bfs
Frontier order: bfs or dfs
Politeness
Flag
Default
Meaning
--no-robots
false
Ignore robots.txt
--no-sitemap
false
Do not seed URLs from sitemap.xml
--user-agent
Chrome UA
User-Agent for asset and robots fetches
Rendering
Flag
Default
Meaning
--scroll
false
Auto-scroll each page to trigger lazy loading
--settle
1.5s
Network-idle quiet period before snapshotting the DOM
--render-timeout
30s
Hard cap per page render
--headful
false
Run Chrome with a visible window (debugging)
--chrome
Path to the Chrome/Chromium binary
--control-url
Attach to an existing Chrome DevTools endpoint
--keep-noscript
false
Unwrap <noscript> content instead of dropping it
Concurrency and limits
Flag
Default
Meaning
--workers
4
Concurrent page render workers
--asset-workers
8
Concurrent asset download workers
--browser-pages
4
Chrome page-pool size
--max-asset-mb
25
Skip assets larger than N MB
--timeout
30s
Per-request timeout
-q, --quiet
false
Suppress per-page progress lines
kage serve
kage serve [dir] [flags]
Runs a local static file server over a cloned folder. With no dir, serves the
current directory.
Flag
Default
Meaning
-a, --addr
127.0.0.1:8800
Address to listen on
kage pack
kage pack <mirror-dir> [flags]
Packs a cloned mirror into one distributable file: an open ZIM archive, or a
self-contained executable that serves the site offline when run. A bare host name
is resolved against the default output directory, so kage pack example.com
works right after kage clone example.com.
Flag
Default
Meaning
--format
zim
Output format: zim or binary
-o, --out
per format
Output path; <host>.zim for zim, <host> (or <host>.exe) for binary
--base
this kage
Base kage binary to append to (--format binary); point at another platform's binary to build a viewer for it
--no-compress
false
Store every cluster raw, no zstd
--title
main page <title>
Archive title
--description
Archive description
--language
eng
Archive language code
--date
today
Archive date (YYYY-MM-DD); pass a fixed value for a reproducible file
kage open
kage open <file.zim> [flags]
Serves a packed ZIM over a local HTTP server for offline reading, the read side
of kage pack --format zim.
Flag
Default
Meaning
-a, --addr
127.0.0.1:8800
Address to listen on
--open
true
Open the default browser (--open=false to skip)
Built with -tags webview (which needs cgo), kage open shows the archive in a
native window instead of the browser, and --open no longer applies. The default
CGO_ENABLED=0 build uses the browser.