The Organigram Passkey Wallet is a non-custodial Ethereum wallet. Its recovery phrase is generated in the browser and stored only encrypted. A passkey is the only thing that can decrypt it. This page describes what protects the wallet, what Organigram servers can see, and the risks the wallet cannot remove.
wallet.organigram.ai. The Organigram application at organigram.ai, or any
other site, cannot run a passkey prompt for them.postMessage. The browser authenticates the sender, so the origin shown in
the approval screen cannot be spoofed by a link.A remote backup holds, for each passkey of the wallet, its encrypted vault and its credential ID, which any of those passkeys can open. The rest of the record (derived addresses, account names, devices) is encrypted with a key derived from the recovery phrase. Organigram therefore sees the wallet address and the credential IDs, which are not secret, and nothing else. Backups are only accepted with a signature from the wallet address they belong to.
A wallet that runs in the browser is only as trustworthy as the code the browser receives. You do not have to take Organigram's word for it:
wallet.organigram.ai, its files and a manifest listing the SHA-256 hash of
every file are published as a release of that public repository. The release
points at the exact public commit the files were built from, and a published
release stays visible to everyone.The code of the wallet is public, so you can also run it yourself, on your own
computer. Your copy opens at https://local.wallet.organigram.ai:3002 and unlocks the same
passkeys as wallet.organigram.ai: you reach the same accounts. Turn on the
“Your own wallet” setting in the wallet, and the apps you use send their
requests to your copy instead.
This works because https://local.wallet.organigram.ai is a special address: Organigram
configured it to point to 127.0.0.1, which every computer understands as “this
computer”. When you open it, your browser does not contact Organigram at all:
it asks your own machine, which serves the copy you started. You can see it for
yourself: change some text in the code of the wallet, and the page shows the
change right away.
This is the strongest guarantee the wallet can offer. The page that handles your keys is served by your own computer, from code anyone can read, and no longer depends on wallet.organigram.ai. Neither Organigram nor someone who took over its servers could change what it does.
It is also the only case in which you may type your recovery phrase into a web page. Never enter it on a website: a fake page can look exactly like your wallet and send what you type anywhere. On a copy running on your own computer, the code that receives the phrase is the code you run, and no remote server can replace it. You will rarely need it there: once your encrypted vault is restored in your copy, your passkeys unlock it as usual.
Before you type your recovery phrase there, you can also declare local.wallet.organigram.ai in the hosts file of your computer. The name then always leads to your machine, whatever a DNS server answers. Without it, the name depends on public DNS like any other website.
To install and start your copy, edit your hosts file and restore your vault, follow the instructions in the wallet README.
With Node.js 20 or later:
git clone https://github.com/organigram/passkey-walletcd passkey-walletnode scripts/verify-runtime-dist.mjs --url https://wallet.organigram.ai
The command finds the release whose index.html is the one served, then checks
every file of that release, the runtime configuration included (it sets the
passkey host, the Organigram server and the blockchain RPC endpoints). It ends
with serves release … unchanged and the release link, or lists each file that
differs and exits with an error. Any difference means the wallet must not be
used until it is explained.
With Node.js 24 and pnpm 10.28, from the public repository at the commit a release points to:
git checkout <release commit>pnpm install --frozen-lockfilepnpm run buildcurl -LO <release manifest URL>node scripts/verify-runtime-dist.mjs --dist app-dist --manifest <manifest file>
The command reports Verified … release file(s) when your build matches the
release. The runtime configuration and images are left out of this comparison,
as each deployment sets its own; the check of the live wallet above covers
them.
Edit this page
© 2026 Organigram SAS
All Rights Reserved.