> ## Documentation Index
> Fetch the complete documentation index at: https://docs.monolex.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# MonoRSS

> Preview feeds, import entries as Markdown, and index syndicated content for Monomento.

MonoRSS is the feed-specific ingestion edge of the Monomento stack. It uses the
`feed-rs` parser, previews a feed without changing local state, and can store
individual entries in [Monomento](/ai-clis/monomento) as `doc_type=rss`.

*Published contract: `monorss 0.2.1`, OpenCLIs build
`2026-04-12-113741`. 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

```bash theme={null}
openclis install monorss

monorss --version
monorss peek https://example.com/feed.xml
monorss fetch https://example.com/feed.xml -n 5
monorss list
```

Use `peek` before importing an unfamiliar feed. It performs the network read
and parse, but it does not open the Monomento writer.

## Published Command Surface

The current public build has **3 operational root commands** plus help and
version aliases.

| Command                         | Reads                           | Writes                                | Contract                                                                                   |
| ------------------------------- | ------------------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------ |
| `peek <feed-url>`               | One HTTP feed response          | Nothing persistent                    | Prints feed identity, entry count, and every returned title.                               |
| `fetch <feed-url> [-n <count>]` | One complete HTTP feed response | Successful entries as `rss` documents | The feed is fetched and parsed in full, then the first N entries are selected client-side. |
| `list`                          | Shared Monomento database       | Nothing                               | Lists at most the 30 newest `doc_type=rss` rows.                                           |
| `help`, `--help`, `-h`          | Embedded root guide             | Nothing                               | Prints the same root guide as bare `monorss`.                                              |
| `version`, `--version`, `-v`    | Package identity                | Nothing                               | Prints `monorss 0.2.1`.                                                                    |

The public root guide names RSS and Atom. The source parser is `feed-rs` and
the library contract also accepts JSON Feed input; format acceptance ultimately
depends on that parser, not on separate MonoRSS format branches.

## Parser and Limit Boundary

MonoRSS uses a hand-written root dispatcher. There is no command-specific help:

```bash theme={null}
monorss help fetch       # prints the root guide
monorss fetch --help     # treats --help as a feed URL and attempts a request
```

The `-n` parser is deliberately small. If `-n` is absent, missing its value, or
followed by a non-integer, the command silently falls back to **no limit**. It
does not fail closed. Validate generated arguments before importing a large
feed.

<Note>
  Repository HEAD contains a `docs [topic]` dispatcher for a future build. The
  immutable `0.2.1 / 2026-04-12-113741` payload rejects `docs` with a non-zero
  exit, so it is not part of the current public contract.
</Note>

## Entry Mapping

| Feed field    | Stored behavior                                                  |
| ------------- | ---------------------------------------------------------------- |
| Title         | Entry title, or `<feed title> #<position>` when absent           |
| Identity/path | First entry link, or `<feed-url>#<position>` when no link exists |
| Content       | Full content body, then summary, then title as fallback          |
| Timestamp     | `published`, then `updated`, then current time                   |
| Type          | Hard-coded `rss`                                                 |

MonoRSS does not use GUID as the storage key. Re-fetching identical content at
the same entry link is skipped; changed content replaces that row. Link changes
or missing-link position changes can create another identity.

HTML removal is a small character-level tag stripper, not a DOM or sanitization
engine. Rich structure, entities, and block formatting may be lost. Preserve
the original entry URL when exact rendering matters.

## Batch and Failure Semantics

`fetch` opens one database transaction and processes the selected entries in
feed order. Each entry uses Monomento's savepoint-protected document write.
Individual index errors are counted as `Skipped`; successful entries are still
committed. The command therefore supports partial success rather than rolling
the entire feed back for one bad entry.

The HTTP client has a 30-second timeout and a MonoRSS user agent. There is no
built-in polling schedule, ETag/Last-Modified state machine, rate limiter, or
retry/backoff loop. Run `fetch` again explicitly or schedule it with an
external system such as [Kernel CLI `schedule`](/kernel-cli/commands).

## Storage and Read/Write Boundary

```text theme={null}
feed URL
   ├── peek  → network read + parse + stdout
   └── fetch → network read + parse + entry documents in shared Monomento DB
```

Monomento resolves the database through `MONOMENTO_HOME`, the current
`~/.monolex/monomento.db`, and then the legacy Monolex application-support
path. `list` is feed-scoped by `doc_type=rss`; use Monomento for cross-source
search and section reads.

## Published Platforms

| Platform            | Binary        |
| ------------------- | ------------- |
| macOS Apple Silicon | `monorss`     |
| macOS Intel         | `monorss`     |
| Linux ARM64         | `monorss`     |
| Linux x86-64        | `monorss`     |
| Windows ARM64       | `monorss.exe` |
| Windows x86-64      | `monorss.exe` |

These six platform entries come from the immutable CDN release metadata.

## Relationships

| Need                               | Tool                            |
| ---------------------------------- | ------------------------------- |
| RSS, Atom, or JSON Feed entries    | **MonoRSS**                     |
| Ordinary static HTML or docs crawl | [MonoFetch](/ai-clis/monofetch) |
| Wikipedia reference                | [MonoWiki](/ai-clis/monowiki)   |
| Search and read imported entries   | [Monomento](/ai-clis/monomento) |
| Schedule an explicit refresh       | [Kernel CLI](/kernel-cli)       |
