llms.txt and llms-full.txt; and ordinary
sitemap.xml files. Converted pages are stored in
Monomento as doc_type=web.
Published contract: monofetch 0.3.15, OpenCLIs build
2026-05-27-231822. The installed-state row, immutable payload, public CDN
pointer, and CDN release metadata agree on this identity. The exact installed
payload was also code-signature verified on macOS.
Quick Start
--no-index for first inspection. Use MonoSurf instead
when content depends on JavaScript, a browser login, or challenge handling.
Published Command Surface
The current public build has 5 operational root commands plus help and version aliases.Parser and Help Boundary
MonoFetch uses a hand-written dispatcher. There is no command-specific help:search consumes only its first positional token as the query. Quote phrases:
-n value falls back to 10. Unknown extra flags are not
systematically rejected, so use only the documented forms.
Repository HEAD contains a
docs [topic] dispatcher for a future build. The
immutable 0.3.15 / 2026-05-27-231822 payload rejects docs with a non-zero
exit, so it is not part of the current public contract.Fetch Output Modes
Mode selection is ordered:--raw wins over --no-index, and --pretty has an
effect only inside the raw branch.
--raw is not a
byte-for-byte archive mode. The implementation decodes response bytes using
the HTTP charset, then an HTML <meta charset> hint, then UTF-8; it prints the
result as text and adds a line ending. It preserves the unconverted response
body semantically, but it cannot serve as cryptographic byte evidence.
Binary content types such as images, audio, PDF, ZIP, gzip, tar, WASM, and
application/octet-stream are rejected. Redirects are followed up to 10 hops;
the final normalized URL, without a fragment, becomes the index key.
Crawl Strategies
HTTP fetches use
MONOFETCH_CONCURRENCY with a default of 8 and a minimum of
- Index writes remain serialized inside one transaction. Individual fetch or index errors are counted while successful pages are committed, so a crawl can partially succeed.
Search and Deduplication
search asks the shared Monomento engine for an over-fetched candidate window,
filters that window to doc_type=web, and takes the requested limit. If no
trigram results remain, it runs a web-scoped SQL substring fallback over names
and content. This makes short and CJK queries practical, but it is not a
guarantee that every lower-ranked web result survives the first candidate
window.
Index replacement is keyed by the final normalized URL and compares stored
content. An unchanged page is skipped; changed content replaces the row.
Fragments do not create separate entries.
Static-Web Boundary
MonoFetch does not execute JavaScript. When a page contains scripts but yields very little extracted text, the no-index path warns and recommends MonoSurf. There is no browser cookie jar or interactive authentication surface. Charset resolution is HTTP header, then an HTML meta declaration in the first 1 KB, then UTF-8. Unsupported labels fall back to UTF-8, so malformed or misdeclared pages can still produce mojibake.Storage
MonoFetch uses Monomento’s shared global database resolution:$MONOMENTO_HOME/monomento.db when explicitly set, then the current
~/.monolex/monomento.db, then the legacy Monolex application-support path.
Use monofetch search for the web-scoped view and
Monomento for cross-source search and section reads.
Published Platforms
The public
0.3.15 metadata does not contain a Windows ARM64 artifact.