Welcome to #Nostr! A magical place where you can speak freely and truly own your account, content, and followers. ✨ I've been enjoying Primal! Big shoutout to @miljan and the team! 🚀
Big day today. One of many to come.
Unfortunately, the days of using cash for in-person purchases are numbered. It won't be long before non-trivial numbers of e-stores require KYC. Augmented privacy networks like Nostr and Lightning give people a way to transact and communicate behind a pseudonym to do business in a distant store.
A reminder: self-custody is non-negotiable. Not your keys, not your coins. Not your relay, not your speech.
Reminder: your seed phrase is a bearer instrument. Treat it like one.
The thing about Nostr is that it doesn't need to win. It just needs to exist. The fact that you can't stop it is the entire point.
Hardware wallets are not optional. If you have more sats than you can afford to lose on a phone, you need cold storage. End of conversation.
The Technology Adoption Curve for Builders
Nostr will be worth 90-days in US$1,000,000
How To Create A Nostr Quotes Bot
Purple Text Orange Highlights
The Fiscal Endgame and Why Hard Money Wins
Cashu in 2026: What Ecash Got Right About Privacy
NDK Patterns: Building Nostr Clients That Don't Suck
Self-Custody is Not a Spectrum
Why I Stopped Caring About Block Size
A Field Guide to Hardware Wallet Threat Models
looking great, ship it
Welcome to #Nostr! A magical place where you can speak freely and truly own your account, content, and followers.
This is my post that is getting all the attention. Think of the zaps, likes, replies and re-posts.
Social interactions benefit from the address book represented by the Nostr
Users
Follow Packs
Account
Options and settings
miljan@primal.net
135 Following 345 Followers
Welcome to #Nostr! A magical place where you can speak freely and truly own your account, content, and followers. ✨ I've been enjoying Primal! Big shoutout to @miljan and the team! 🚀
Welcome aboard. This place rewards patience — the relays you pick now will shape what your feed feels like a year from now.
Welcome! Don't be shy about pruning your follow list aggressively. The signal-to-noise ratio is whatever you make it.
Glad to have you. The early days of any open protocol are the most interesting ones.
Big +1 for the team. Primal has been doing real work on the client side while everyone else is still arguing about NIPs.
Welcome. Pro tip: zap the people whose posts genuinely shifted something for you. It's the closest thing this protocol has to a thank-you note.
Glad you're here. The interesting conversation has been migrating off legacy platforms for a while — Nostr is where most of it has landed.
Welcome. Get a key backup strategy in place before you post anything you'd miss.
The Technology Adoption Curve for Builders
Most builders read Rogers and walk away with the wrong lesson. The curve isn't a roadmap — it's a description of who you can credibly reach with the product you can credibly ship. This piece is about how to choose your wedge.
The canonical adoption curve was first described by Everett Rogers — a 1962 framing that we keep mistaking for a description and treating as prescription.
For builders, the curve is rarely the question. The question is which segment you can credibly reach with the surface you can credibly ship.
A lot of teams skip this step entirely. They build for "everyone" and then act surprised when the product feels like it was built for nobody. The curve doesn't flatten because adoption is hard. It flattens because each segment requires a different product, not a different marketing campaign.
Adoption is never about the technology itself.
Innovators (2.5%)
These are the people who try the thing before it works. They are also the people who tell you, with conviction, that it works.
Innovators are valuable not because they're representative — they aren't — but because they're willing to absorb the cost of a half-built product in exchange for the option value of being early. Treat them as collaborators, not customers. They'll write your changelog for you.
The trap is mistaking innovator enthusiasm for early-majority readiness. Innovators love the thing because it's broken. The early majority will reject the thing for exactly the same reason.
Early Adopters (13.5%)
Early adopters are pragmatists who've been burned. They want the thing to work, but they've seen enough vapor to be suspicious of anyone selling a vision before a product. They will pay for the version that ships, not the version on the roadmap.
The Chasm
Geoffrey Moore's 1991 addendum to Rogers — Crossing the Chasm — describes the gap between early adopters and the early majority as the single most under-priced risk in tech. Most products die in this gap. Not because they're bad, but because the thing that worked for early adopters doesn't work for the next cohort.
The way through is unromantic: you pick one beachhead segment, dominate it completely, and use that as a reference for the next. There is no "broad market launch." There is a series of beachheads, ordered correctly.
Nailed it. The chasm is the only thing that matters.
The "beachhead segment" framing is underrated. Most teams I see try to build a Swiss-army-knife product and end up with a thing that nobody loves.
The Bitcoin parallel is striking. The original adopters wanted a peer-to-peer cash system that mostly didn't work. The early majority wanted a store of value that mostly did. Two different products, same network.
I'd add: the order of the beachheads matters more than the choice of any single beachhead. Get the sequencing wrong and you spend years rebuilding the product for a market that never showed up.
Highlighter
https://highlighter.com
Daily spending budget for this app:
Active Sessions
Highlighter
Publish Note - Event Details:
Oct 28, 2025 12:29 PM
d61f3bc5b3eb...4a1a0da6ef4a 1 - short note "p", "mention", "50d94fc2d8580c69..."
"e", "reply", "abc123def4567890..."
"t", "nostr", "nostr..."
"client", "31990:abc:1", "Highlighter..." Hello world. What a wonderful day to be alive and signing notes with my Primal account. Settings
VERSION 3.5.9
Connected Apps
LOCAL APPS
REMOTE APPS
Connected App Details
PrimalWeb
Last Session: May 17, 2026 12:05 PM
PERMISSIONS
RECENT SESSIONS
Session Details
PrimalWeb
Started on: May 17, 2026 12:05 PM
Event Details
Application-specific Data
May 17, 2026 12:05:59 PM
Signed
8d58c44be957...ee111af9acf6 c0f582a48863...d9b8ae6f8890 30078 - Application-specific Data 1779012358 "d", "Primal-Web App", "set_app_subs_..." {"subkey":"user-nwc","settings":{"nwcList":[["Primal Remote Wallet","2pBsmGGASJVVn1ugZF9qSEDpuBDJ/mfG+lUyJk5uC1JqsJ/Nux5DjyiPag8hA3A61fjQuL2j1rc5KSM3daGIjtVizfjURLqIPkBIhoBG+WkrBa72Z5CTgZIz0NTs5zlAwFLFOhXCDUkkq3s1v+IoLpp/T5bnA56WpHqGin1skpN0ib20Bmm1Ub4jc91hj6JVPGgeOzXiZMryXHtNkaz/KKkh+wfh3vSnzPDgZQA3+cjZicwtj+zYjU0...
Sending 0 sats
to recipient
Success! 0 sats sent to
recipient
Received 2,100 sats
from bob
Great having you at Bitcoin Park last week. Looking forward to next time!
Welcome to #Nostr! A magical place where you can speak freely and truly own your account, content, and followers. ✨ I've been enjoying Primal! Big shoutout to @miljan and the team! 🚀
You can change your Nostr Lightning Address (for receiving zaps) in your profile settings.
Open the wallet when Primal starts
You can choose to hide small transactions to avoid spam in your transaction list
Write down your wallet recovery phrase so you don't lose access to your funds
If you have an existing wallet that you wish to use with your Nostr account, you can restore it here using your 12-24 word recovery phrase.
Download your entire wallet transaction history in CSV format
Alternatively you can connect to an external lightning wallet via Nostr Wallet Connect
CONNECTED APPS
You can connect your Primal Wallet to other Nostr apps via Nostr Wallet Connect to enable zapping and payments.
To keep running reliably it's necessary to run wallet service in the background.
Download logs history for all connected apps in CSV format
We are going to display your wallet recovery phrase on the next screen.
IMPORTANT: Primal does not have access to the funds in your wallet. You have sole custody of your wallet via the recovery phrase. If you lose your recovery phrase, Primal will not be able to restore your funds.
This is your wallet recovery phrase. To backup your wallet, simply write these words down in the correct order.
The words are not case sensitive and they are separated by spaces. We will ask you to verify on the next screen.
Your wallet has been backed up. You now hold the keys to your bitcoin! Please confirm the three points below.
I understand that:
- My funds are not held by Primal
- If my device gets lost or stolen, the only way to recover my funds is via the wallet recovery phrase
- It is my sole responsibility to keep my recovery phrase safe
We support recovery of any existing bitcoin wallet on the Spark network. Recovery phrases are 12 to 24 words long.
Restoring your wallet...
- It will take less than a minute
- We'll transfer your wallet balance
- We'll copy your transaction history
- You'll keep your lightning address
Please keep Primal open
until the upgrade process is done.
Questions? Check out our FAQs.
Creating your new Spark wallet...
Please keep Primal open
until the upgrade process is done.
Wallet upgraded!
Primal Signer
NIP-46 remote signer for Nostr, built as a cross-platform library. Sign in to any Nostr app without the secret key ever leaving your phone. Shipped in Primal 2.6, January 2026.
Tap the phone any time to pause and explore.
“I think it’s fair to say that we broke new ground with our iOS remote signer. People have been trying to build something like this for a long time, even predating Nostr, and afaik all those attempts have been shut down by Apple.”
“As much as I have problems with primal, big props to miljan and team for making a legit remote signer. Legend.”
“Incredible work, very smooth experience. I think it’ll still be hard to recommend that people download an unrelated social media app in order to sign in to the one they actually want to use, but for people who already use primal this is great.”
“Remote signer is revolutionary for user efficiency. Great addition!”
Challenge
On Nostr, a user’s identity is a single secret key. Every app they sign into traditionally wants that key directly, and the moment an app holds it, it holds the whole identity. The risk is sharpest in the browser, where a key pasted into a page is one bad tab away from being gone. The remote signer began as the answer to that problem: signing in to Primal on the web without the key ever reaching the browser. The key stays in a sandboxed keystore on the user’s phone, signing happens there behind a permission flow they control, and the app being signed into only ever receives a signature. The protocol already described how this should work; the job was to implement it properly, as a complete and reusable solution rather than a feature wired into one app. Done once and done well, it would do more than protect a single login: it would let a Primal user sign in to any Nostr app at all, which is the larger prize.
What we built
The work delivered a complete remote signer: the signing capability, the cross-platform library it ships as, and the audit log that keeps it accountable to the user.
The remote signer. Signing runs on NIP-46, the Nostr remote-signing standard. The secret key stays in a sandboxed keystore on the phone. An app requests a signature, the user approves or denies it, and only the signature leaves the device. Each authorized app holds one of three trust levels, minimal, scoped, or full, and every move between levels is its own confirmed moment.
One library, every app. The signer is not app code with a separate port written for each platform. Everything it does, the signing, the sessions, the permission model, and the audit log, lives in a single cross-platform library: one complete, self-contained solution. Appollo41 built that library, and the Primal Android app on top of it. The same library runs in Primal’s iOS app, imported as a finished component. The signer was built once, not once per platform.
The audit log. Everything the signer does is visible to the person who owns the key: every app they have authorized, every session per app, and every event signed in a session with its disposition, accepted, signed, rejected, or ignored, down to the exact JSON payload that was signed. The audit log was not in the original product design. We scoped it, drew the screens, brought it to product as a proposal, and shipped it.
Technical decisions
Four decisions shaped the work more than the rest.
Standards-first. No proprietary variant was ever on the table, because interop is the whole point: someone who signs into Nostr apps through Primal should be able to sign into any Nostr app. The signer is built on three published standards. NIP-46 covers remote signing. NIP-44 is the encrypted-communication layer beneath it, shipped first as a prerequisite and non-trivial on its own. NIP-55 covers local signing on Android. We did more than implement the standards. Working with the NIP-46 author, we designed a refinement that adds a few flags to the connection handshake: an app that also needs Nostr Wallet Connect can receive its NIP-47 secret through the signer in the same exchange, rather than pairing for it separately.
The signer runs as a service. Remote signing only works if the signer is reachable: a request can arrive at any time, and something has to be listening for it. So the library carries its own long-running service, a self-contained component that accepts signing requests and returns signed responses on its own. The platform does not reimplement any of that. It stands the service up and bridges to it natively, and the signing logic stays identical from one platform to the next. On Android we host that service in the background. One host can run more than one of these services at once, and that is exactly how Nostr Wallet Connect arrived for the wallet later: a second library service under the same platform host.
One session model, local or remote. NIP-55 signs on the device; NIP-46 signs for an app running elsewhere. Rather than maintain two parallel code paths, the existing signing architecture was extended so that a session is a session whatever the source of the request. The user-facing model, the permission levels, and the audit trail are identical whether a signature was requested locally or remotely.
The permission model, mapped end to end. Three trust levels across many authorized apps produce dozens of possible transitions. If a user moves from minimal to scoped, do events already allowed at the higher scope apply? What happens moving from full back down? What even counts as a session boundary, when NIP-46 does not define one? Every transition was mapped before code was written. The unusual ones went to product for a joint decision; the low-impact ones were resolved in-house. Every screen was a state machine in the team’s heads first. The interactive demo on this page is, quite literally, that state machine, and it could not exist without the production one underneath it.
Outcome
Primal 2.6 shipped the signer on Android and iOS in January 2026. The engagement leaves two results worth recording: the product in users’ hands, and the library underneath it.
The signer. It became the way a Primal user signs in across Nostr, not only to Primal but to any Nostr app, without their secret key ever leaving the phone. For a piece of security infrastructure, being recognized by Nostr developers outside Primal, not only by its own users, is the reception that counts.
The library. The signer shipped as a library, and the library is the part that compounds. It runs in production on both Primal apps. Primal’s iOS developer, who integrated it, told us it was the best library he had worked with; asked for improvement feedback after both libraries shipped, he had none. The signer library came first, and the wallet engagement that followed reused the same pattern.
None of this is the finish line. Remote signing is a strong answer to the security of Nostr keys, not a perfect one, and Appollo41 is already deep in research on what comes next: a generation of authentication that reaches beyond what a signer can do. That work is not yet public. The remote signer is one milestone, and the quest continues.
The signer is one part of a three-year Primal engagement.
Comments