Community

Apps

Grimoire

Grimoire is a web-based Nostr protocol explorer by purrgrammer: a command-palette workspace where REQ queries become reusable spells, layouts become spellbooks and Nostr events become inspectable panels.

Grimoire 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
Apps14 min readmeta-client for event dashboards

Grimoire

Grimoire is a web-based Nostr protocol explorer by purrgrammer: a command-palette workspace where REQ queries become reusable spells, layouts become spellbooks and Nostr events become inspectable panels.

The quick readGrimoire is not a normal timeline client. It is a Nostr explorer with a tiling workspace, command palette, reusable relay queries called spells and shareable layouts called spellbooks. The repository is now archived, so read it as a brilliant experiment and useful reference, not as a guaranteed long-term product.

A client that behaves like a workbench

Grimoire belongs to the small class of Nostr apps that change your mental model of the protocol. It is not trying to be a friendlier Twitter clone. It is closer to a protocol workbench: a web app where profiles, events, relays, NIPs, zaps, chats, counts, raw JSON and arbitrary event feeds can live side by side in a tiled interface.

The public tagline says it is a Nostr client for magicians. That is cute, but the serious word in the name is not magic. It is method. A grimoire is a book of procedures. This app treats Nostr the same way. Instead of hiding the network behind one main feed, it asks you to write down little procedures for seeing the network: fetch kind 1 notes from these authors, count kind 9735 zap receipts on this relay, open this profile, inspect this event, browse this NIP, watch this hashtag, show this in compact mode, keep this stream open.

The README describes Grimoire as a Nostr protocol explorer and developer tool with a tiling window manager interface. That is the best plain sentence for it. Each window is a small Nostr app: a profile viewer, event feed, NIP viewer, event detail panel or other focused tool. The command palette, opened with a keyboard shortcut, behaves like a little shell for the network. You type commands. Grimoire turns them into panels. The workspace becomes your dashboard.

This matters because Nostr is not one app. It is a pile of event kinds, relay behaviors, address formats and social conventions. Normal users need polished clients. Builders and curious power users also need instruments. Grimoire is an instrument.

Spells are saved queries

The central idea is the spell. In Grimoire, a spell is a reusable Nostr query. The project even includes a draft NIP document for spells, proposing kind:777 events that encode relay query filters as portable, shareable Nostr events. The spell can store a REQ or COUNT command, a human-readable name, topic tags, target relays, relative timestamps and runtime variables.

That sounds abstract until you see an example. A command like req -k 9735 -a $contacts,$me is not just a clever line of text. It is a way to say: show me zap-related events involving my network. Another command might ask for recent kind 1 notes from contacts over the last day, events mentioning your pubkey, NIP-50 search results, addressable events by d tag, or compact rows for a busy relay. Grimoire's req parser supports kinds, authors, event IDs, address pointers, #e, #a, #p, uppercase #P, hashtags, d tags, arbitrary single-letter tags, relative time such as 7d, relay URLs, search terms, follow mode and compact view.

The runtime variables are the clever part. $me resolves to the active user's pubkey. $contacts resolves to the pubkeys in the active user's contact list. That means a shared spell can be personal without hard-coding the original author's identity. If I share a spell for "recent notes from my contacts", you should be able to run the same spell against your contacts. That is the difference between a screenshot of a dashboard and a portable dashboard recipe.

Grimoire also treats spell publishing as a real Nostr action. The publish-spell code builds kind 777 events, signs them with the active account's signer, optionally adds Grimoire's client tag and selects relays for publishing. Local spells are stored with Dexie-backed browser storage, and published spells are marked with their event IDs. This is not just UI poetry. The app tries to make queries themselves into Nostr objects.

Spellbooks turn layouts into objects

A spellbook is the next step up. If a spell is one reusable query, a spellbook is a whole workspace arrangement. The code uses kind:30777 for spellbook events. A spellbook can contain a title, description, slug, content and the layout state needed to recreate a set of panels. When published, Grimoire signs the event and sends it through the same account and relay machinery as other Nostr actions.

That is a subtle but powerful idea. Nostr clients usually let you share content: notes, articles, pictures, zaps, lists. Grimoire lets you share a way of looking. A person can build a dashboard for a subject, a hashtag, a protocol area, a set of people, a relay comparison, an event-kind family or a monitoring workflow. Then that dashboard can become a Nostr event itself.

The interface supports the idea with tiled windows and workspaces. The core state code creates workspaces, inserts windows into a Mosaic layout, moves windows between workspaces, applies layout presets, labels workspaces and tracks active accounts. The component list shows viewers for posts, profiles, relays, events, JSON, NIPs, kinds, counts, chats, Blossom content, wallet state and zaps. It is a small operating environment for Nostr data.

This is why Grimoire feels different from a feed. In a feed, the app decides the shape and you scroll. In Grimoire, the user decides the shape and the network fills it. That makes it harder to learn, but also more honest about what Nostr actually is: a queryable event network, not a single homepage.

The stack under the purple smoke

The implementation is a modern TypeScript web app. The README names React 19, TypeScript, Vite, TailwindCSS, Jotai, Dexie and Applesauce. The package file adds the details: Radix UI components, cmdk for command palette behavior, react-mosaic-component for the tiled window layout, react-router, react-virtuoso for long lists, Tiptap for rich editing pieces, Shiki and react-markdown for rendered documentation and code, FlexSearch, RxJS, nostr-focused Applesauce packages, Blossom client tooling, Nostr Wallet Connect support and media libraries for richer content.

The service layer confirms the ambition. There are modules for accounts, event stores, relay pools, relay selection, relay authentication, relay liveness, relay lists, spell storage, spellbook storage, publish services, Blossom server caches, profile search, emoji search and NWC. The command list goes far beyond req. It includes NIP browsing, kind browsing, manual pages, event opening, profile lookup, chat entry points, zaps, encoding and decoding Nostr bech32 values, and count queries using the relay COUNT verb.

Grimoire also reaches into many NIP-shaped corners. The command docs refer to NIP-05 identifier resolution, NIP-22 comments, NIP-29 relay-based groups, NIP-45 COUNT, NIP-50 search, NIP-53 live activity chat, NIP-57 zaps, NIP-65 relay selection and NIP-89-style handler territory elsewhere in the codebase. You do not need to memorize those numbers to use it, but the numbers explain the app's personality. It is built for people who want to poke the protocol directly.

The live website at grimoire.rocks is a static web app shell with a PWA manifest, custom theme color and bundled assets. That fits the product: no heavy server story is visible from the public app shell. The browser becomes the workstation; Nostr relays provide the data; local browser storage keeps your spells, spellbooks and working state.

What the archive banner means

The important caveat is visible on GitHub: purrgrammer/grimoire was archived by the owner on April 23, 2026 and is now read-only. The repository was created on December 10, 2025, pushed as recently as April 15, 2026, and GitHub still shows public interest around it, but archived means archived. The code is no longer an open issue-and-PR workspace in the normal way.

That changes how this page should talk about it. Grimoire is real. The website exists. The source is public. The MIT license is present. NostrApps lists it as a web app and highlights the spell/spellbook concept. Community traces, including a Stacker News discussion, show people experimenting with it and pointing to the same source repository. But we should not sell it to readers as if it were an actively maintained commercial product with support guarantees.

Read it as a working artifact and a design reference. If you want to depend on it every day, test the live app carefully, check whether your signer flow works, export or preserve anything important, and remember that a browser app can change or disappear even when the code remains readable. If you are building Nostr tooling, Grimoire is still highly valuable because the design ideas are portable: shareable queries, dashboard layouts as events, command-first navigation, NIP documentation inside the client and protocol objects made visible.

Who will actually enjoy it

Grimoire is for people who want Nostr to become an instrument panel. If you only want to follow friends and post notes, you may prefer a normal social client. If you have ever opened a relay inspector, copied an naddr, wondered what a kind number means, compared relays, tracked zaps, watched hashtags, debugged a client, built a bot or tried to understand why an event appears in one place and not another, Grimoire starts to feel natural.

The learning curve is not a defect. It is the price of the interface. The app asks you to think in commands: req, count, open, profile, chat, zap, encode, decode, nip, kind. Once that clicks, the app becomes less like a social feed and more like a Nostr terminal with a visual memory.

There is also a cultural point here. Nostr needs friendly clients, but it also needs strange clients. Strange clients discover what the protocol can do before mainstream clients make it comfortable. Grimoire's magic theme is playful, but the product question underneath is serious: what if users could publish not only posts, but also reusable ways to query and understand the network?

Why Grimoire belongs here

Grimoire deserves a place in the app shelf because it stretches the category. It is not just a content reader. It is not only a developer tool. It is a bridge between a Nostr client, a relay query console, a dashboard builder and a public recipe library for protocol exploration.

That is exactly the kind of app a Nostr atlas should preserve. Some projects will become polished products. Some will become abandoned prototypes. Some will survive as code ideas that other builders quietly absorb. Grimoire may sit anywhere on that spectrum, but the idea is strong enough to write down carefully: queries can be social objects, layouts can be shared, and a protocol client can be an exploratory workspace rather than a single feed.

If you open Grimoire, do it with the right expectation. Do not ask, "Is this the easiest Nostr client?" Ask, "What does this let me see that a normal client hides?" That is where it becomes useful. It gives you a way to turn Nostr from a stream into a set of windows. For some readers, that will be the first time the network feels truly inspectable.

Sources worth opening

These are the sources used to pin Grimoire down: live app, app directory listing, source repository, spell proposal and the code files that show how commands, spells, spellbooks and workspaces are wired.

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.