Offline reference: an encyclopaedia, a dictionary and the ICS forms on the laptop¶
When the network is down the questions keep coming: what an acronym in a
passed message means, how to treat an injury, how a part works, what the
agency's communications plan form wants. The reference profile puts the
answers on the laptop first: Kiwix books you choose (Wikipedia, WikiMed,
WikEM, Amateur Radio Stack Exchange and others), a dictionary server with an
English dictionary, a thesaurus, computing terms and acronyms, and FEMA's
ICS forms. hammunition reference serve shows all of it on one page in a
browser, on this machine only.
The decision behind this is D-066 in docs/DECISIONS.md; the method
the books use is D-049's offline-data layer.
What you need first¶
- A choice of books. Nothing is chosen for you.
hammunition reference bookslists the 27 the catalog offers, with each one's size and licence. - Disk space for the books you choose. A book is counted twice while it installs: the checked download, then the installed copy (the download is deleted once the copy is in place). See Sizes.
- A network connection at install time, and only then.
1. Choose your books¶
Each book has an id: Kiwix's own file name without its date. A book in
several flavours has one id per flavour: maxi has pictures, nopic has
none, mini keeps each article's introduction only. Choose by id,
comma-separated:
hammunition station set --reference-books ham.stackexchange.com_en_all,wikipedia_en_medicine_nopic,wikem_en_all_nopic
That replaces the whole list. An id the catalog does not list is refused as
you type it, with the command that lists them. The ids are saved in
~/.config/hammunition/station.yml with your other station values, and
hammunition station show prints them: which books you read is not where
you are, so unlike map regions they are named.
Why only the catalog's list: the ZIM files do not say what licence they are
under (of nine read, one did), and the plan has to print each book's
licence before you confirm. The list carries the publisher's own licence
line for each book. A book not on it can be added to
catalog/data/kiwix-books.yaml with its licence, and the pins regenerated
(scripts/gen_kiwix_pins.py); or you can open any ZIM you have with the
readers directly.
2. Look at the plan, then install¶
The plan names each book with its date, size and licence before anything downloads, for example:
Each book is checked twice: against the size and sha256 the catalog pinned
when it was downloaded, and again when it is copied into
/usr/local/share/hammunition/data/kiwix-library/. With no books chosen,
kiwix-library is deferred by name and the readers, dictionaries and forms
install anyway.
From a LAN mirror. Books are the largest data the catalog fetches, and
the one a LAN mirror saves most on: with hammunition
station set --mirror http://bunker.lan:8080/, each book is asked of
<mirror>/kiwix-library/<book id> first and of Kiwix second, checked
against the same pinned size and sha256 whichever answers, and the plan
line says so (— the LAN mirror first, then the publisher; the sha256 is
checked either way). A mirror holding an older date of a book fails that
check and Kiwix is asked instead. For a mirror to hold your books, give
them to it: hammunition artifacts --units kiwix-library --reference-books
ham.stackexchange.com_en_all,wikipedia_en_medicine_nopic is the listing
Hammunition Bunker keeps (D-070).
3. Open it: hammunition reference serve¶
Then open http://127.0.0.1:8480/ in a browser. The page lists every installed book (click one to read it; Search every book searches them all), every ICS form, and how to use the dictionaries. Ctrl-C in the terminal stops it.
It listens on 127.0.0.1 only. The books are served by Kiwix's own
kiwix-serve on the next port (8481), which the engine always starts with
-i 127.0.0.1: left to itself kiwix-serve listens on every network address
of the machine and announces its LAN address. If you run kiwix-serve by
hand, give it -i 127.0.0.1 yourself. --port N moves the page (Kiwix
takes N+1); it never widens the address. To read the books from another
machine, forward the ports over SSH (ssh -L 8480:127.0.0.1:8480 -L
8481:127.0.0.1:8481 <laptop>) rather than opening a listener.
The desktop reader, kiwix, opens the same files by name from
/usr/local/share/hammunition/data/kiwix-library/, if you prefer a window
to a browser tab.
The same page carries the offline map when osm-pmtiles is installed
(D-071): http://127.0.0.1:8480/map/ draws your map regions in the
browser, and shows your position while the GPS tether runs (the
hammunition-gps-tether login service, section 11 of the navigation
guide, or
hammunition maps gps-tether by hand).
The page's Map section links to it, or says what to install.
Offline navigation
describes it. The server answers only requests that name 127.0.0.1 or
localhost, so another site cannot read which regions you carry.
4. Dictionaries¶
dictionaries installs dictd with four databases: GCIDE (English), WordNet
(definitions and synonyms), FOLDOC (computing) and VERA (acronyms). In a
terminal:
dictd listens on 127.0.0.1 port 2628 only, because Debian's own configuration says so; nothing is changed. goldendict-ng is the desktop look-up: add the local dictd (127.0.0.1) as a DICT server among its dictionary sources once. Where that setting sits in its current menus has not been checked on a desktop here yet.
Translation dictionaries are not installed: Debian has 253
dict-freedict-* packages, 32 from English. Choose the ones for the
languages you serve (apt search dict-freedict-eng).
5. The ICS forms¶
ics-forms installs the 39 PDFs FEMA publishes as the ICS forms, under
/usr/local/share/hammunition/data/ics-forms/: the 205 incident radio
communications plan and 205A communications list, the 213 general message,
the 214 activity log, the 201 briefing and the rest, with FEMA's
instructions and the NIMS forms booklet. They are fillable in a PDF reader
that fills forms, and on the reference page under ICS forms. FEMA
publishes no checksum for them; each is checked against a sha256
Hammunition measured on 2026-09-29.
Winlink users have ICS-213 and its siblings in pat's forms already. The ICS 309 communications log is not among the 39 FEMA lists, so it is not here.
6. Keeping the books current¶
Offline, update says whether each chosen book's pinned file is installed.
--upstream asks Kiwix (about 3 KB per book) whether the pinned file is
still its newest. Kiwix keeps only the two newest dated files of each
book, so a pin dies about two publications after it was made:
- newer upstream: Kiwix has published a newer file. Yours still works and can still be installed, but the pinned file goes at the next publication.
- pin expired: the pinned file is gone. An install refuses that book,
naming
scripts/gen_kiwix_pins.py, and never quietly takes the newer file: nobody has measured its sha256.
Either way the fix is in the catalog: the weekly pin review flags a pin
that has gone, and regenerating is scripts/gen_kiwix_pins.py; pull the
catalog once it has been regenerated, and install again. An
installed book keeps working whatever happens upstream.
Sizes¶
Measured 2026-09-29 from Kiwix's own metadata. hammunition reference
books prints the current pin for every book.
| Book | Size |
|---|---|
| Simple English Wiktionary | 26.5 MB |
| Amateur Radio Stack Exchange | 75.9 MB |
WikiMed, introductions only (mini) |
163 MB |
| WikEM, no pictures | 347 MB |
| Wikivoyage, no pictures | 272 MB |
| Appropedia | 582 MB |
| WikiMed, no pictures | 862 MB |
| Simple English Wikipedia, no pictures | 1.09 GB |
| WikiMed, with pictures | 2.22 GB |
| iFixit | 3.57 GB |
| Army Publishing Directorate | 8.23 GB |
| English Wikipedia, introductions only | 14.4 GB |
| English Wikipedia, no pictures | 52.7 GB |
| English Wikipedia, with pictures | 127 GB |
At these sizes a LAN mirror is worth having before a rebuild: see A LAN mirror for offline data.
The readers and dictionaries are small (kiwix-tools about 11.4 MB with its dependencies, the dictionaries about 32 MB); kiwix and goldendict-ng are mostly their web engine, not yet measured. The ICS forms are 8 MB.
Licences¶
The plan prints each book's licence line, and hammunition reference books
lists them. Hammunition states them and does not judge what you do with
the content:
- Wikipedia, Wiktionary, Wikivoyage, WikiMed: CC BY-SA 4.0 for text; media are licensed individually.
- Stack Exchange sites: CC BY-SA.
- Appropedia, WikEM: CC BY-SA 4.0. MDWiki: CC BY-SA. OpenStreetMap wiki: CC BY-SA 2.0.
- iFixit: CC BY-NC-SA 3.0, non-commercial.
- Ready.gov, the Army Publishing Directorate, the FAS military-medicine mirror, and the ICS forms: US federal works, public domain (17 USC 105). For the three scraped sites this is the class of the publisher, not checked page by page.
- Project Gutenberg's military-science class: public domain in the USA, with Project Gutenberg's licence on the ebook files.
What is not carried, and why¶
- wikiHow: Kiwix has no current wikiHow file (the archive holds frozen 2023 copies), and its content is CC BY-NC-SA.
- The
zimgit-*prepper collections (post-disaster, medicine, water, knots, food preparation): no licence is stated anywhere, in the files or by their publisher. They are a documented gap until one is. - energypedia: its licence could not be verified on the day.
- The whole of Project Gutenberg: 221 GB. One class of it, military science, is offered; others can be added to the list the same way.
- Video-channel ZIMs (prepper channels) and MedlinePlus: mixed licences (MedlinePlus includes A.D.A.M. content that is not public domain).
- ARRL and ARES material, including ETC's ARRL band chart: ARRL copyright.
- A sigidwiki ZIM: none exists.
artemiscarries the signal database offline already. - Direwolf's user guide: Debian's
direwolfpackage strips upstream's PDFs. Upstream publishes them in thewb2osz/direwolf-docrepository, which is the route, and has not been measured here.
Removing it¶
removes the books and the forms (their data directories, whole). The
readers and dictionaries are apt packages and come out with hammunition
uninstall kiwix-tools kiwix dictionaries goldendict-ng. The library file
reference serve builds is in ~/.cache/hammunition/reference/ and can be
deleted at any time.
Troubleshooting¶
- "not in the catalog's book list" when setting books: the id is not
one the catalog offers. Ids use Kiwix's spelling:
wikipedia_en-simple_all_nopichas a hyphen inen-simple.hammunition reference bookslists them. - "answered HTTP 404" at install: the pin has expired upstream (see Keeping the books current). Nothing was changed.
reference servesays kiwix-serve or kiwix-manage is not on the PATH:hammunition install kiwix-tools.- "cannot listen on 127.0.0.1 port 8480": something else has the port,
or another
reference serveis running.--port 8490uses 8490 and 8491. - A book opens with no pictures: you chose a
nopicorminiflavour. Choose themaxiid too, if the disk has room.
What has not been measured yet¶
- A real
hammunition install referenceon a target: the fetch, check and install of one book (76 MB) and of the 39 forms ran through the engine's own code on the development host on 2026-09-29, andreference serveran there against the archive's kiwix-tools 3.7.0 unpacked from its.deb, with both listeners on 127.0.0.1 only and Ctrl-C stopping kiwix-serve. It has not run on the field laptop, and no page has been opened in a desktop browser there. reference serveagainst Ubuntu 24.04's kiwix-tools 3.5.0: the flags it passes (-a,-M,--library) were measured on 3.7.0 only. If 3.5.0 lacks one, kiwix-serve exits at start and the page stops with its exit code; it cannot start listening wider.- goldendict-ng's DICT-server setting and the Kiwix desktop reader on a desktop session.
- The installed sizes of
kiwixandgoldendict-ngon a desktop that lacks their web engines.