Offline Wallet
About
Offline Wallet is a self-contained, air-gapped build of Extra Wallet. It ships a local ui and a signer iframe on a different origin so you can generate/store keys, protect phrases as QR, and sign transactions without internet.
It’s distributed as a desktop bundle with an executable and the offline ui/signer assets. Once launched, it serves the wallet locally in your browser.
- Wallet Expander – derive per-network address ranges; add/remove accounts; export watch-only data
- Add Wallet – create/import a wallet (mnemonic or QR)
- QR Safe Keeper – encrypt/decrypt sensitive text into password-protected QRs
- Sign Transaction – export unsigned transaction, sign offline, and import the signature to broadcast
Key Features
- 🔌 Truly offline after download
- 🧿 Separate-origin signer isolates passwords, decrypted text, and signing flows
- 🧰 Focused toolset for wallet creation/import, derivation, QR protection, and signing
- 🧳 Cross-platform: macOS (Intel/Apple Silicon), Linux (x86_64/arm64), Windows (x86_64)
- 🔐 Local portfolios with optional auto sign-in
Choose The Right Distribution
| Your system | CPU architecture | Download |
|---|---|---|
| macOS (Intel) | x86_64 | extra-wallet-offline-darwin-amd64.zip |
| macOS (Apple Silicon M1/M2/M3) | arm64 | extra-wallet-offline-darwin-arm64.zip |
| Linux (most PCs/servers) | x86_64 | extra-wallet-offline-linux-amd64.zip |
| Linux (ARM64) | arm64 | extra-wallet-offline-linux-arm64.zip |
| Windows 10/11 (64-bit PCs) | x86_64 | extra-wallet-offline-windows-amd64.zip |
Check your architecture
- macOS:
uname -m→x86_64orarm64 - Linux:
uname -m→x86_64oraarch64/arm64 - Windows: most devices are
x86_64
How To Use
1. Install And Run
-
Download the bundle for your OS (see table above).
-
Unarchive it. Ensure the ui and signer folders sit in the same directory as the executable. After downloading the ZIP for your platform:
-
Windows: Right-click the
.zip→"Extract All..."→ choose a directory →"Extract" -
MacOS/Linux: Use built-in archive manager or run unzip in terminal
This will create a folder like:
extra-wallet-offline-windows-amd64/
├── extra-wallet-offline-windows-amd64.exe
├── ui/
└── signer/ -
-
Run the executable.
-
Windows: double-click
extra-wallet-offline-windows-amd64.exe. A terminal window should open. -
macOS / Linux:
Open a terminal and run:
chmod +x extra-wallet-offline-<your-arch>
./extra-wallet-offline-<your-arch>
Example (Linux amd64):
./extra-wallet-offline-linux-amd64
A local server starts and your default browser opens:
- ui at
http://localhost:5173 - signer iframe at
http://localhost:5001
Use a dedicated browser profile with no extensions and disable the network when possible.
2. Authenticate → Authentication & Portfolios
Right after authentication you can open QR Safe Keeper and encrypt/decrypt phrases. Other tools will be limited until you add a wallet.
3. Create Or Import A Wallet → Add Wallet
4. Derive Addresses And Add/Remove Accounts → Wallet Expander
5. Protect A Phrase As QR (Encrypt/Decrypt) → QR Safe Keeper
6. Sign A Transaction Offline And Broadcast Online → Sign Transaction
Security And Privacy
- 🔒 Offline-first: All crypto operations run locally.
- 🧿 Signer isolation: password fields, decrypted text, and signing UI are rendered in a separate-origin iframe.
- The host page cannot read the secrets DOM due to the Same-Origin Policy.
- Only minimal, non-sensitive status messages cross via
postMessage(never passwords or decrypted payloads).
- 🧠 Portfolio data is stored locally on your machine/profile. No telemetry.
- Passwords are unrecoverable. Keep them safe.
- Untrusted extensions or malware can defeat local security. Use a clean machine/profile.
FAQ
Do I need internet? No. After download, the app runs entirely offline.
Can I reuse the same browser as the online wallet? Yes, but log out of the online wallet first (same profile). Prefer a separate profile or incognito tab.
Where is data stored? Locally in the browser’s IndexedDB for your profile. You can clear it any time from the wallet header or manually. Incognito profiles clears data when closed. Always export backups.
Troubleshooting
| Problem | Solution |
|---|---|
index.html not found | Ensure ui/ and signer/ are present next to the binary. |
| App doesn’t open in browser | Open http://localhost:5173 manually. |
| Binary won’t run (macOS/Linux) | chmod +x <binary> |
| macOS: “App can’t be opened…” | Right-click → Open → Allow once |
| Port already in use | Make sure nothing else is using port 5173 or 5001. |
zip: command not found | Install zip (sudo apt install zip on Ubuntu) |
Developer Info
- Built and maintained by the Extra Wallet team.
- Source: Extra Wallet Offline
Overview
The offline bundle includes:
- Static web ui served at
http://localhost:5173 - Local signer iframe server at
http://localhost:5001 - A Go binary that serves both UI and signer
- A .zip archive for each platform (Windows/macOS/Linux)
Requirements
- Go 1.20+
zipCLI tool (preinstalled on most systems)- Bash (for running the build script)
- Built ui & signer assets (see below)
Repository Layout
├── ui/ # Frontend build output
├── signer/ # Signer build output
├── main.go # Offline binary entrypoint
├── scripts
│ └── build-all.sh # Cross-platform build + packaging
└── builds/ # Final output (archives with the binary + ui and signer builds)
Build The Binaries
1. Build UI And Signer Assets
Make sure you've built the ui and signer with offline env vars before bundling.
# From the offline repo root:
# ui
cd ../ui # adjust path to your ui repo
yarn
yarn build
cp -r ./dist/* ../offline/ui # adjust path to your ui repo
# signer
cd ../signer # adjust path to your signer repo
yarn install
yarn build:offline
cp -r ./dist* ../offline/signer # adjust path to your ui repo
- signer
.env:
PORT=5001
ALLOWED_ORIGINS="http://localhost:5173,http://localhost:5001"
- ui
.env:
VITE_URL_IFRAME=http://localhost:5001
VITE_BUILD_TARGET=offline
After this step you should have:
-
./ui→ ui assets -
./signer→ signer assets
2. Build Binaries & Archives
From the offline repo root:
./scripts/build-all.sh
The script:
-
Builds the Go binary for:
-
Windows (amd64)
-
Linux (amd64, arm64)
-
macOS (amd64, arm64)
-
-
Bundles
signer,uiand the binary into a.ziparchive -
Writes archives into
./buildsdirectory
Output Layout
builds/
├── extra-wallet-offline-windows-amd64.zip
├── extra-wallet-offline-linux-amd64.zip
├── extra-wallet-offline-linux-arm64.zip
├── extra-wallet-offline-darwin-amd64.zip
├── extra-wallet-offline-darwin-arm64.zip
└── ...
Each archive contains:
-
The platform-specific binary
-
ui/– web frontend -
signer/– signer iframe