Community

Apps

Nostrame

Nostrame is a browser-side Nostr vault: it injects window.nostr, signs events without handing private keys to websites, manages multiple accounts, encrypts its vault with a master password and lets you decide which sites may ask for which signing actions.

Nostrame 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
Apps17 min readNIP-07 signer, encrypted vault, permissions and relay lists

Nostrame

Nostrame is a browser-side Nostr vault: it injects window.nostr, signs events without handing private keys to websites, manages multiple accounts, encrypts its vault with a master password and lets you decide which sites may ask for which signing actions.

The quick readNostrame is a Chromium signer extension for people who want a Nostr account vault in the browser: NIP-07 signing, NIP-04 and NIP-44 encryption, mnemonic-derived accounts, nsec/hex/ncryptsec import, encrypted backups, auto-lock and per-site permission memory. Its public code lives under getnostrame/nostrame, and the Chrome Web Store listing is offered by anderson.juhasc.

The signer is the boundary

Nostrame belongs to the small class of Nostr apps that do not try to be the place where you read everything. Its job is more sensitive: it sits between websites and your signing key. A Nostr web client can show you a button, build an event and ask for a signature. Nostrame is the extension that decides whether that request should receive one. That boundary is the whole point.

The project describes itself as a Nostr signer and account management extension for Chromium. NostrApps lists the same basic identity and highlights NIP-07, BIP-39 seed phrases, NIP-49 imports, AES-256-GCM encryption, per-website permissions, NIP-65 relay lists, encrypted vault backup and auto-lock. The GitHub repository currently resolves as getnostrame/nostrame, is public-domain software under the Unlicense, and traces back to the Chrome Web Store listing for extension ID phfdiknibomfgpefcicfckkklimoniej. On June 6, 2026, the repo had been updated on June 2, 2026, and its bundled manifest reported version 1.1.2. Store mirrors can lag; Extpose showed 1.1.1 with a June 1, 2026 update. That mismatch is exactly why a signer page should keep source links close.

The developer trail is public but modest. The Chrome Web Store and mirrors list the publisher as anderson.juhasc. The repo was created on April 25, 2024, has a small public footprint, and uses React, nostr-tools, webextension-polyfill, async-mutex, identicon.js, qrcode.react and react-router-dom. The README says Nostrame is based on fiatjaf's nos2x, the original NIP-07 browser extension. That lineage matters: Nostrame is not inventing the signer pattern. It is trying to make the pattern feel more like an account vault.

That is the right ambition. The worst way to use Nostr on the web is to paste an nsec into every app that asks nicely. The better way is to let websites request signatures and let a signer decide. Nostrame tries to give that signer enough account management, backup and permission memory that it can become a daily tool rather than a fragile demo.

What it injects into the browser

Nostrame is a Manifest V3 extension. Its manifest declares a background service worker, an options page, a popup, a content script that runs on <all_urls>, and a web-accessible nostr-provider.js file for HTTP(S) pages and local development origins. The declared permissions are storage, windows and alarms, with notifications as optional. In browser-extension language, that is the basic machinery needed to store encrypted state, open permission prompts and manage lock timers.

The content script injects nostr-provider.js into the page. That provider creates window.nostr with getPublicKey(), signEvent(event), nip04.encrypt(), nip04.decrypt(), nip44.encrypt() and nip44.decrypt(). Calls are sent from the page to the content script with window.postMessage, then forwarded to the background service worker through browser.runtime.sendMessage. The content script also sends the current host and favicon, so the permission window can show you which site is asking.

That architecture is the familiar NIP-07 bridge, but Nostrame's implementation adds a few useful hard edges. It handles extension-context invalidation by telling the page to reload instead of silently failing. It serializes errors into plain objects because some Chromium and Brave messaging paths otherwise lose the error message. These are not glamorous details, but they are the details that make an extension feel less haunted when the browser updates, sleeps or restarts the service worker.

The important reader takeaway is simple: websites do not get the private key through window.nostr. They get an API for requests. Nostrame's background worker is where signing and decryption happen, and that worker is also where the vault is unlocked or locked. That separation is the thing you are installing.

The vault is the real product

The source is unusually explicit about its vault model. The background code states a set of security invariants: the in-memory vaultKey is the single source of cryptographic truth; UI lock flags are only hints; service worker termination must be treated as automatic lock; private keys never leave background memory; and session storage contains no secrets. That is the kind of comment you want to see in a signer, because it tells you the author understands where the dangerous line is.

The crypto module uses PBKDF2-SHA256 with 600,000 iterations to derive a non-extractable AES-GCM key from the master password. It encrypts vault data with AES-256-GCM, a 32-byte salt and a 12-byte IV, and stores the output as a versioned v2: blob. It also contains a legacy decryptor for older AES-CBC data with 10,000 PBKDF2 iterations, then immediately migrates that data to the stronger v2 format on successful unlock. That migration path is worth noting because real extensions live across versions, and users do not always rebuild vaults from scratch.

When the vault is unlocked, Nostrame partitions sensitive material in background memory. Private keys, mnemonic words and the active account key are treated as private material. Public metadata is separated. On lock, the code attempts to wipe private fields, clears metadata, clears the cryptographic key and writes only a UI hint that the vault should appear locked. Auto-lock is implemented with Chrome alarms, and the default timeout is five minutes, with options for ten minutes, thirty minutes or never.

Precision matters here. The encrypted vault is stored by the extension, so the extension can remember your accounts. The decrypted keys are what Nostrame tries to keep only in memory while the vault is unlocked. That is a much stronger posture than leaving raw keys in extension storage, but it still means your master password, browser profile, extension update path and local machine security matter. A signer is a vault door, not a magic spell.

Accounts, imports and recovery

Nostrame is not only one key in a popup. The signup flow generates BIP-39-style seed words through nostr-tools/nip06, asks for a passphrase and a master password, derives the first private key, creates an encrypted vault and publishes a default relay-list event if the account does not already have one. The derive-account modal increments an account index and derives another private key from the same mnemonic and passphrase. That gives you multiple identities inside one vault without keeping separate seed phrases for each one.

Imports cover the formats a Nostr user is likely to bring from another tool. The import modal accepts nsec, raw hex, mnemonic words or ncryptsec. For ncryptsec, it uses NIP-49 decryption with a separate decryption password. It checks whether the key already exists among imported or derived accounts, stores the imported account, makes it active and re-encrypts the vault through the background worker. It also calls the relay-list helper so imported accounts can get a kind 10002 relay list when needed.

Backup and restore are intentionally plain. Export downloads a JSON file containing the encrypted vault blob. Import reads that JSON, asks for the backup password, sends the encrypted vault to the background worker, decrypts it, migrates legacy format if necessary and stores the new encrypted vault. The backup file is not a plaintext seed phrase. It is an encrypted object that is only useful with the right password. That is good, but it also means password discipline is not optional. Lose the password and the backup is supposed to be useless.

The privacy policy says Nostrame does not collect, store or transmit personal data, and that processing happens locally on the user's device. It also makes the necessary Nostr exception: the extension communicates with user-chosen or default relays, and only data the user intentionally makes public is transmitted. That is the honest version of privacy for a Nostr signer. The extension can avoid analytics and external servers, but Nostr itself is a relay network. Public events are public because you publish them.

Permissions are where trust gets real

A signer lives or dies by prompts. Nostrame's prompt UI shows the requesting host and favicon, names the requested capability and lets you reject once, reject forever, authorize once, authorize forever, or authorize a specific event kind when a signEvent request includes a kind. The common permission code stores policies per host, action and request type. For signing requests, kind-specific conditions are checked against the event. For non-signing calls, a remembered forever or kind policy can auto-authorize.

That is the right level of granularity. A website asking to read your public key is not the same as a website asking to sign a kind 1 text note, a kind 0 metadata event, a relay-list event or an encrypted-message action. Nostrame's prompt model lets you build memory around those differences. You can let a trusted client sign one class of events while still requiring prompts for others. You can reject a hostile site forever. You can avoid turning the extension into a silent rubber stamp.

The extension can optionally show notifications for allowed or denied actions. It can also open prompt windows and keep track of permission state in extension storage. This is why extension permissions deserve real attention. A NIP-07 signer must inject into pages and communicate with them; otherwise it cannot do its job. But because it sits in that position, you should install it only from the verified listing, review the public code when you can, and periodically check which sites you have allowed.

Nostrame's README lists supported NIPs as NIP-01 for event signing, NIP-04 for legacy encrypted direct messages, NIP-06 for mnemonic key derivation, NIP-07 for browser signing, NIP-19 for bech32 entities such as npub and nsec, NIP-44 for modern versioned encryption, NIP-49 for encrypted private keys and NIP-65 for relay list metadata. That is a strong signer surface. It also means the prompts matter more, not less.

Relays belong in account management

Nostrame includes a relay page because account management in Nostr is incomplete without relay management. A key tells the world who signed. A relay list tells clients where to look. The relay UI lets you add a wss:// relay, toggle read and write flags, remove entries, refresh from the network and publish changes. If no kind 10002 relay list is found for the account, the UI warns that it is using default relays and asks you to publish your relay list so other users can find your content.

The outbox helper is careful about the distinction. It says NIP-65 defines how users publish relay preferences, while the outbox model describes how clients use that information. When fetching another user's content, you query that user's write relays, not your own favorite relays. Nostrame fetches kind 10002 events from discovery relays such as wss://purplepag.es/, wss://relay.damus.io/, wss://nos.lol/ and wss://nostr.wine/, verifies signatures, rejects future timestamps, caches relay lists and falls back to defaults when no useful list is found.

Publishing a relay list uses an intentional tradeoff: the helper treats one successful relay publish as success, while logging failures. That gives fast feedback and avoids an all-or-nothing feel, but it does not guarantee broad propagation. This is a good example of the kind of product truth Nostr users need to learn. Publishing to relays is probabilistic in practice. A signer can help, but it cannot make every relay behave.

The relay work also explains why Nostrame feels like more than a key popup. It wants an account to carry a usable routing trail. Create a vault, derive an account, import a key or switch identities, and the extension tries to keep relay-list publishing in the workflow. That is a meaningful difference from a signer that only answers signEvent and leaves discovery as somebody else's problem.

How I would test it

First, verify the listing and code path. The Chrome Web Store listing is the install path, but the repo and bundled manifest should be part of your trust check. Confirm the extension ID, check the public repository, read the privacy file, and notice the version trail. With a signer, install source matters. A fake signer can be catastrophic even if the popup looks polished.

Second, create a throwaway vault before you bring in a real identity. Generate a mnemonic, set a strong master password, unlock and lock the vault, change the auto-lock timeout, and confirm that the extension behaves as if service-worker restarts can lock it. Then connect it to a harmless Nostr web client and watch the NIP-07 flow: get public key, sign one low-risk event, reject once, authorize once, authorize one event kind, and revoke a remembered permission.

Third, test account movement. Derive a second account, import a disposable nsec, import a ncryptsec if you use NIP-49, switch between accounts and check that the active public key changes in the client. Export an encrypted backup, import it into a clean browser profile if you have a safe test environment, and prove to yourself that the backup password is required. Do not wait until a real machine failure to learn how recovery works.

Finally, test relays. Add a relay, set read and write flags, publish a kind 10002 list, and check from another client whether discovery improves. Then step back and ask the adult question: do you want a browser extension to hold this identity, or do you want a separate signer, a hardware path, a remote signer or a mobile signer? Nostrame gives a serious Chromium vault. That is useful. It is also a place where your habits decide whether the tool becomes safety or convenience theater.

Sources worth opening

This article keeps claims close to the Chrome listing, mirrors, public repo and source files. Start here before trusting any signer with a real key.

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.