Community

Apps

Narr

Narr brings the old web and Nostr long-form into one calm reader: RSS, Atom, JSON Feed, OPML, SQLite, Fever clients, NIP-23 articles and a local server you can run yourself.

Narr icon
Apps The product layer Clients, signers, publishing tools, wallets and protocol utilities.
Back to Nostr
Apps

Apps shelf

Apps pages collect clients, signers, tools, developer libraries and product research without turning the app into the whole network.

Apps All Apps pages App routeProduct profiles, categories, tools and source links Browse appsClose shelf

App orientation

App categories

App profiles

0xchatadvanced-nostr-searchAegisAlbyAlby GoAlby HubAlby HubAlby SDKAmberAmberAmethystAmethystApp and product researchApplication-specific dataBlossomBlossom spec NIP-B7BookstrBorisBouquetCalendar by FormstrChachiNostr Apps DirectoryCoracleCoracleCorny ChatCreatrDamusDamusDeveloper stack researchDittoDittodiVineDocstrDTANEmojitoFlotillaFlycatFormstrFountainFreeFromFundstrfutrGIF BuddyGittrgo-nostrGossipGossipGrimoireGroups NIP-29HablaHablaHello Nostr — ResourcesHighlighterHiveTalkhomebrew-nostrHORNET StorageHugo2NostrHyperNoteIrisIrisJumblekanbanstrKeys BandListrLNBits NostrmarketLumeLumilumiLUMINAMapstrMarmot Protocolmatrix-nostr-bridgeMeetstrMemestrMindsmonstrmostardMostronaknak — Nostr Army KnifeNalgorithmNarrnashboardNDKNegentropyngitNofluxNosNos Socialnos2xnosbinnosclNostorg Feature MatrixNostr App ManagerNostr Apps Directory GuideNostr clients feature listNostr Compass — ProjectsNostr Developer GuideNostr Development KitNostr Events MonitorNostr MCP ServerNostr NestsNostr PlaygroundNostr Service ProvidersNostr Writernostr-post-checkernostr-protocol/nostrnostr-rubynostr-sdknostr-sdk-ffinostr-sdk-flutternostr-to-rssnostr-toolsNostr.bandnostr.buildnostr.co.uk ClientsNostr.how — Clientsnostr.hsNostrabilityNostrAppsNostrApps category — AudioNostrApps category — CareerNostrApps category — CommunityNostrApps category — CurationNostrApps category — Direct MessageNostrApps category — DiscoveryNostrApps category — File SharingNostrApps category — Group ChatNostrApps category — MeatspaceNostrApps category — OnboardingNostrApps category — SignersNostrApps category — Toolsnostrchecknostrdbnostrdb-rsNostreeNostreonNostriaNostridNostrium / read.nostr.comNostrmoNostrubenoStrudelnoStrudelNostterNosturNosturNotedeckNpub.proNpub.worldnsec.appnsiteNsiteNstart.meObsidian Nostr WriterOlasOpenvibeOracoloOstrich WorkOwn Your PostsP2P BandPazPeridotPhoenixPlebeian MarketPostizPostr / write.nostr.comPrimalPrimalPrimal Article Editor / Reads authoringPrimal Studiopynostrpython-nostrRecommended Application HandlersRelay Toolsrsslayrust-nostrrust-nostr docsSatelliteSatellite EarthSatlantisSatShootShakespeareShopstrSlidestrSnortSnortStemstrswift-nostr-clientTreasuresWavlakeWavlakeWikifreediaWikistrYakiHonneYakiHonneYakiHonne mobile/web app directoryYondar

App pages

Deep dives

Field guides

Awesome Nostr branches

Research and library

Source inventory

Deep Research: Clients, apps and product surfacesDeep Research: Developer stack and toolingResearch Map: nostrapps.comResearch Source: 0xchatResearch Source: 0xchat — NostrApps pageResearch Source: advanced-nostr-searchResearch Source: Aegis — NostrApps pageResearch Source: AlbyResearch Source: Alby — NostrApps pageResearch Source: Alby GoResearch Source: Alby HubResearch Source: Alby Hub GitHubResearch Source: Alby SDKResearch Source: AmberResearch Source: Amber — NostrApps pageResearch Source: AmethystResearch Source: Amethyst GitHubResearch Source: Awesome Nostr ResourcesResearch Source: BookstrResearch Source: BorisResearch Source: Boris — NostrApps pageResearch Source: BouquetResearch Source: Bouquet — NostrApps pageResearch Source: Calendar by FormstrResearch Source: ChachiResearch Source: Chachi — NostrApps pageResearch Source: CoracleResearch Source: Coracle — NostrApps pageResearch Source: Corny ChatResearch Source: DamusResearch Source: Damus — NostrApps pageResearch Source: DittoResearch Source: Ditto — NostrApps pageResearch Source: DocstrResearch Source: DTANResearch Source: DTAN — NostrApps pageResearch Source: EmojitoResearch Source: Emojito — NostrApps pageResearch Source: Flotilla — NostrApps pageResearch Source: FlycatResearch Source: FormstrResearch Source: Formstr — NostrApps pageResearch Source: FountainResearch Source: FreeFromResearch Source: FreeFrom — NostrApps pageResearch Source: FundstrResearch Source: futrResearch Source: futr — NostrApps pageResearch Source: GIF BuddyResearch Source: GIF Buddy — NostrApps pageResearch Source: GittrResearch Source: go-nostr GitHubResearch Source: GossipResearch Source: Gossip — NostrApps pageResearch Source: GrimoireResearch Source: Grimoire — NostrApps pageResearch Source: HablaResearch Source: Habla — NostrApps pageResearch Source: Hello Nostr — ResourcesResearch Source: HighlighterResearch Source: HiveTalkResearch Source: HORNET Storage — NostrCompassResearch Source: IrisResearch Source: Iris — NostrApps pageResearch Source: JumbleResearch Source: Jumble — NostrApps pageResearch Source: Keys BandResearch Source: Keys Band — NostrApps pageResearch Source: ListrResearch Source: LNBits NostrmarketResearch Source: LumeResearch Source: LumilumiResearch Source: LUMINAResearch Source: MapstrResearch Source: Marmot ProtocolResearch Source: MeetstrResearch Source: MemestrResearch Source: MindsResearch Source: monstr GitHubResearch Source: mostardResearch Source: MostroResearch Source: my.nostr.comResearch Source: nak — Nostr Army KnifeResearch Source: nak GitHubResearch Source: NalgorithmResearch Source: Narr — NostrApps pageResearch Source: nashboardResearch Source: NDK GitHubResearch Source: NDK NPMResearch Source: NegentropyResearch Source: Noflux — NostrApps pageResearch Source: Nos SocialResearch Source: Nos Social — NostrApps pageResearch Source: nos2xResearch Source: nos2x — NostrApps pageResearch Source: nosbinResearch Source: noscl GitHubResearch Source: Nostorg Feature MatrixResearch Source: Nostr App ManagerResearch Source: Nostr Book — KindsResearch Source: Nostr DesignResearch Source: Nostr Developer GuideResearch Source: Nostr NestsResearch Source: Nostr Nests — NostrApps pageResearch Source: Nostr PlaygroundResearch Source: nostr-post-checkerResearch Source: nostr-protocol/nostr GitHubResearch Source: nostr-sdk crates.ioResearch Source: nostr-sdk-ffi GitHubResearch Source: nostr-tools GitHubResearch Source: nostr-tools NPMResearch Source: Nostr.BandResearch Source: nostr.buildResearch Source: nostr.co.uk ClientsResearch Source: Nostr.howResearch Source: Nostr.how — ClientsResearch Source: Nostr.how — ProtocolResearch Source: Nostr.how — What is Nostr?Research Source: Nostr.orgResearch Source: NostrabilityResearch Source: NostrAppsResearch Source: NostrApps category — AudioResearch Source: NostrApps category — CareerResearch Source: NostrApps category — CommunityResearch Source: NostrApps category — CurationResearch Source: NostrApps category — Direct MessageResearch Source: NostrApps category — DiscoveryResearch Source: NostrApps category — File SharingResearch Source: NostrApps category — Group ChatResearch Source: NostrApps category — MeatspaceResearch Source: NostrApps category — OnboardingResearch Source: NostrApps category — SignersResearch Source: NostrApps category — ToolsResearch Source: nostrcheckResearch Source: nostrdb GitHubResearch Source: NostreeResearch Source: Nostree — NostrApps pageResearch Source: NostriaResearch Source: Nostria — NostrApps pageResearch Source: NostridResearch Source: Nostrmo — NostrApps pageResearch Source: Nostrmo GitHubResearch Source: NostrubeResearch Source: noStrudelResearch Source: noStrudel — NostrApps pageResearch Source: NostterResearch Source: NosturResearch Source: Nostur — NostrApps pageResearch Source: NotedeckResearch Source: Npub.proResearch Source: Npub.worldResearch Source: nsec.appResearch Source: NsiteResearch Source: Nstart.meResearch Source: Nstart.me — NostrApps pageResearch Source: Obsidian Nostr Writer — NostrApps pageResearch Source: OlasResearch Source: Olas — NostrApps pageResearch Source: OpenvibeResearch Source: OracoloResearch Source: Oracolo — NostrApps pageResearch Source: Ostrich WorkResearch Source: P2P BandResearch Source: PazResearch Source: PeridotResearch Source: Peridot — NostrApps pageResearch Source: PhoenixResearch Source: Phoenix — NostrApps pageResearch Source: Plebeian MarketResearch Source: Plebeian Market — NostrApps pageResearch Source: PrimalResearch Source: Primal — NostrApps pageResearch Source: Primal Article Editor / Reads authoringResearch Source: Primal StudioResearch Source: pynostr GitHubResearch Source: python-nostr GitHubResearch Source: Registry of KindsResearch Source: Relay Tools — NostrApps pageResearch Source: rsslayResearch Source: rust-nostr docsResearch Source: rust-nostr GitHubResearch Source: SatelliteResearch Source: SatShootResearch Source: ShakespeareResearch Source: Shakespeare — NostrApps pageResearch Source: ShopstrResearch Source: Shopstr — NostrApps pageResearch Source: SlidestrResearch Source: SnortResearch Source: start.nostr.netResearch Source: StemstrResearch Source: TreasuresResearch Source: WavlakeResearch Source: WikifreediaResearch Source: Wikifreedia — NostrApps pageResearch Source: WikistrResearch Source: Wikistr — NostrApps pageResearch Source: YakiHonne mobile/web app directoryResearch Source: YondarResearch Source: Yondar — NostrApps page
Apps18 min readself-hosted RSS and Nostr reader

Narr

Narr is what happens when RSS, local software and Nostr long-form articles meet in the same reading chair. It is small, technical, stubbornly useful and very much not trying to be a social network.

The quick readNarr, by fiatjaf, is a self-hosted RSS and Nostr long-form reader written in Go. It runs as a single binary with SQLite, parses classic feed formats, discovers Nostr article feeds from profiles, imports and exports OPML, exposes a Fever API for clients such as Reeder and ReadKit, and ships desktop builds for Linux, macOS and Windows.

RSS never left the room

There is a temptation in Nostr to treat every old web technology as if it has been spiritually replaced. That is usually a mistake. RSS did not fail as a reading technology. It was pushed aside by platform timelines, app stores, engagement metrics and the convenience of letting somebody else decide what deserves your eyes today. If you care about long-form writing, RSS still has a beautiful shape: subscribe to sources, pull new items, read on your own terms, export your list, leave when you want.

Narr understands that Nostr long-form content belongs in that same mental family. It is not a client for posting hot takes. It is not a feed algorithm. It is not a social app pretending that every article has to arrive through a notification storm. Narr is a reader for people who want old-web feeds and Nostr articles in one quieter place. The name is a joke: "not another rss reader." The product is more serious than the joke. It asks a good question: what if NIP-23 articles could sit beside RSS, Atom, RDF and JSON feeds in the reader you already know how to use?

The official repository describes Narr as a web-based RSS and Nostr long-form feed aggregator that can be used as both a desktop application and a personal self-hosted server. That one sentence is the whole design. You can run it locally, keep the database near you, and use the web interface or another compatible reading client. It feels less like joining a service and more like adding an instrument to your desk.

Narr comes from fiatjaf, one of the central Nostr builders. His tools page lists it as a Nostr-capable RSS reader based on yarr. NostrApps lists the highlights: RSS feeds, Nostr NIP-23 long-form articles, OPML import and export, desktop use with a web-based UI and remote access from apps such as Reeder and ReadKit. Those are not random checkboxes. They are the practical pieces that let long-form Nostr leave the social feed and enter a reading workflow.

What Narr actually runs

Narr is written primarily in Go and released under the MIT license. The GitHub repository was created on December 21, 2024, and describes the project as a self-hosted Nostr and RSS reader. The latest release found during this research was v0.3.3, published on January 25, 2025, with prebuilt zip assets for Linux, macOS and Windows AMD64. That matters because Narr is not merely a hosted website. It is software you can download and run.

The README says the app is a single binary with an embedded SQLite database and that it is based on yarr. In practice, that gives Narr a very specific personality. It is not a cloud feed service with an account page somewhere. It is a local server with a database file. The default command-line address is 127.0.0.1:7049. There are flags and environment variables for server address, base path, authentication, TLS certificate and key files, database path, log file and opening the server in a browser.

That setup has consequences. It means your feed state, read state and stored items live in SQLite unless you configure otherwise. It means backups are your responsibility. It means self-hosting can be private and sturdy, but not magical. If you expose Narr beyond localhost, you need to understand auth and TLS. The README is plain about this: for self-hosting, check narr -h for auth, TLS and server configuration flags.

The codebase also shows that Narr is not only a wrapper around Nostr. It contains feed parsers for RSS, Atom, RDF and JSON Feed, OPML import/export code, readability and sanitizer modules, storage layers, a web UI, systray integration and server routes. The Go module pulls in github.com/mattn/go-sqlite3, github.com/nbd-wtf/go-nostr, github.com/fiatjaf/eventstore, Markdown rendering and HTML sanitation. The result is a reader with old-web plumbing and Nostr plumbing in the same body.

How Nostr becomes a feed

The most interesting part of Narr is how it turns a Nostr profile into something feed-like. The Nostr worker accepts inputs with nostr: or nostr:// prefixes, and it recognizes profile-style identifiers such as npub and nprofile. The server route also helps by prepending nostr: when a user enters an npub, an nprofile or a NIP-05-style address without a Nostr prefix.

Once Narr resolves the profile, it fetches outbox relays, subscribes for the author's article events and asks for nostr.KindArticle, which maps to the NIP-23 long-form kind. The worker uses a limit of 300 events. For each article it builds a feed item from the event: title, summary, image, published time, update time, HTML content and a URL pointing to njump with an naddr. That is the bridge. The Nostr article remains a Nostr article, but Narr gives it the shape a feed reader understands.

The article content path is careful in ways that matter. The worker converts NIP-23 Markdown to HTML, replaces Nostr identifiers with HTML links, and when it sees profile identifiers it tries to fetch profile names so the output can be more readable than a wall of bech32 strings. It also links Nostr references to njump. This is exactly the kind of boring-looking translation work that makes open protocols pleasant. A standard is only useful when somebody does the patient work of making it readable at the edge.

Narr does not turn all of Nostr into RSS. That would be a different product. It focuses on long-form articles. That focus is healthy. A social firehose and a long-form reader are not the same kind of attention. Narr treats NIP-23 like the article format it is supposed to be: something you subscribe to, store, search, mark read, revisit and maybe read later in an app that does not care about likes or follower drama.

OPML, Fever and the reader you already like

RSS people care about portability because they have been burned before. OPML is the old, practical answer: export your subscription list, import it somewhere else, keep moving. Narr supports OPML import and export. The route code exposes /opml/import and /opml/export, creates folders and feeds from imported OPML, and exports subscriptions as subscriptions.opml. That sounds dry until you lose a reader account or migrate machines. Then it becomes the difference between freedom and tedious reconstruction.

Fever API support is the other important bridge. Narr's Fever documentation says the implementation is based on an existing Fever API spec and warns, honestly, that different server and client implementations can have compatibility problems because the original definition is not very clear. It lists tested apps including Reeder, ReadKit, Fluent Reader, Unread and Fiery Feeds. That is a thoughtful choice. Instead of forcing you to love Narr's own web UI, Narr can act as the backend for a reader app you already prefer.

The Fever code exposes groups, feeds, favicons, items, unread item IDs, saved item IDs, mark-as-read and saved/unsaved states. It is not glamorous, but it is exactly what makes a reader feel like a reader rather than a scraped web page. Read state matters. Folders matter. Favicons matter. A saved item matters. Nostr can learn a lot from this old RSS discipline: the reading environment should be calm, persistent and user-shaped.

The combination is unusually practical. You can feed Narr with old websites and Nostr authors. You can import old subscriptions. You can export them later. You can use the web interface, or point an external reader at the Fever endpoint. You can run the whole thing as a desktop app or as a small personal server. That is not a fashionable product pitch. It is better: it is a stack a serious reader can imagine living with.

The kind of reader who should care

Narr is for readers who do not want every piece of writing to become a social-media event. If you follow Nostr authors who publish NIP-23 articles, and you still have RSS feeds from blogs, newsletters, project pages, journals or weird small sites, Narr gives those worlds a shared room. You can treat a Nostr author like a feed source. You can keep read/unread state. You can export your subscriptions. You can decide whether the web UI is enough or whether Reeder, ReadKit or another Fever-capable client is the better front end.

The checks before serious use are ordinary but important. First, decide whether you are running it only on localhost or exposing it beyond your machine. If it is not just local, configure authentication and TLS thoughtfully. Second, back up the SQLite database if the read state and subscriptions matter to you. Third, test your Nostr sources. Nostr article discovery depends on profile resolution, relay availability and outbox hints; if an author publishes on relays Narr cannot reach, your reader will not summon those articles from nowhere.

Fourth, understand the shape of the Nostr bridge. Narr fetches long-form article events and turns them into feed items; it is not a replacement for a full Nostr client. It will not give you every reaction, reply, zap, repost or social context around an essay. That limitation is part of its virtue. You open Narr to read, not to perform.

The nicest thing about Narr is that it reminds you Nostr does not have to invent every interface from scratch. Some of the best network habits are old: feeds, folders, export files, local databases, desktop software, small servers. Narr gives NIP-23 articles a way to enter that older, saner reading culture. For long-form Nostr, that is a real contribution.

Sources worth opening

This article keeps claims close to the public project trail. Start with these pages when you want to verify the product yourself.

Back to the Crays Nostr page
Apps route visual cue 1
Apps route visual cue 2
Apps route visual cue 3
Apps route visual cue 4
Apps route visual cue 5

How to use this page

Find the product surface first.

Search clients, signers, product categories or developer tools when you need a specific app, source file or comparison clue.

AppsKeep exploring AppsApp routeProduct profiles, categories, signer guides and source links.Browse apps
Apps route visual cue 1
Apps route visual cue 2
Apps route visual cue 3
Apps route visual cue 4
Apps route visual cue 5

Bring something back

Ask, suggest, submit or nominate.

Use these links when something is missing, a source is stale, or a public Nostr builder belongs in the map.