Describe your app once, for every wallet.
Wallets that open web apps each ask for their own file: farcaster.json,
tonconnect-manifest.json, a Safe manifest.json, a form on a developer
portal. A Wallet App Manifest is one file any wallet can read, whatever
chains it supports.
It is the Web App Manifest your site probably already has, plus one member:
{
"name": "Orb Quest",
"start_url": "/",
"icons": [{ "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" }],
"wallet": {
"version": "1",
"chains": { "required": ["eip155:8453"] },
"capabilities": { "required": ["provider.ethereum"], "optional": ["wallet.ready"] }
}
}That is all a wallet needs to show your app under its name and icon, warn
users whose wallet lacks Base, and keep a loading screen up until your page
calls window.wallet.ready().
Status: Draft, version 1. Comments and implementations welcome.
| Where | <link rel="manifest"> of your home page, or /.well-known/wallet-app.json |
| Reused from the W3C | name, short_name, icons, start_url, scope, description, background_color, categories, screenshots |
| Assets | icon 1024 × 1024 opaque PNG, banner 1200 × 630, splash 200 × 200, phone screenshots 1284 × 2778 — the Farcaster sizes, so one set of files serves both |
Added (wallet) |
version, subtitle, heroImageUrl, splashImageUrl, chains, capabilities, association, extensions |
| Chains | CAIP-2 ids: eip155:1, bip122:000000000019d6689c085ae165831e93, … |
| Capabilities | an open registry (provider.ethereum, provider.bitcoin, wallet.ready…), <wallet>:<name> for one wallet's own |
| Domain proof | signed by any CAIP-10 account, no platform account, no third party |
| In the page | window.wallet.ready() |
spec/wallet-app-manifest.md— the specificationschema/— JSON Schema (2020-12)registry/— capabilities and wallet namespacesexamples/— a minimal and a complete manifest, a pagetest-vectors/— signed associations to test a verifierscripts/validate.mjs— validator, for a file or a live siteIMPLEMENTATIONS.md— wallets and apps that support itcaip/— the draft to submit as a CAIP
npm install
node scripts/validate.mjs examples/full.webmanifest orbquest.game
node scripts/validate.mjs https://your.app
npm testIt is not another file: it is the one you have. Wallets reading it agree on one format, so an app built for one wallet works in all of them, and no wallet decides alone what apps must declare. See Motivation and Relationship to other specifications in the spec.
Issues and pull requests: see CONTRIBUTING.md. To add your wallet or app, edit IMPLEMENTATIONS.md.
The specification, schema, registries and examples are released under CC0 1.0 (public domain). The scripts are under the MIT license.