A secure Solana hardware wallet with the comfort of NFC tap-to-pay.
SolWear is a wearable hardware wallet for Solana. It keeps wallet material on a dedicated device, gives the user an approval screen on the wrist, and lets an Android phone act as the fast NFC relay for everyday payments, wallet actions, and signing flows.
This public repository is the prototype bundle. It brings the firmware, Android companion, desktop service tool, website, and project profile into one place so the complete system can be reviewed from hardware to user experience.
- The watch stores wallet material locally and shows signing approvals on its own display.
- The Android companion prepares Solana transactions and opens an NFC session.
- SolWear receives the request, the user confirms on the watch, and the device returns only the signed payload or signature.
- The phone broadcasts through Solana RPC while the private key stays on the wearable.
| Directory | Purpose | Stack |
|---|---|---|
firmware/ |
SolWearOS firmware for the watch prototype | ESP-IDF, C, ESP32-S3 |
mobile/ |
Android companion for pairing, wallet preview, NFC signing, and transaction relay | Kotlin, Jetpack Compose |
service-tool/ |
Desktop utility for serial inspection, flashing, and device service workflows | Python, Tkinter |
website/ |
Product site and signup/preorder experience | Next.js, React, Tailwind |
profile/ |
GitHub profile copy and project material | Markdown, media |
| Area | Current state |
|---|---|
| Hardware | ESP32-S3 Mini prototype with ST7789 display, PN532 NFC, four buttons, LiPo power, and 3D-printed enclosure |
| Firmware | SolWearOS Prototype V2 UI with reimagined Pebble-inspired monochrome visuals, detailed watchfaces, signing review, wallet, stats, battery, storage, and NFC interaction surfaces |
| Mobile | Android NFC reader/signing flow tuned for Prototype V2 tag-mode pairing, wallet preview, Solana RPC balance, and send path |
| Tooling | Desktop service utility for serial inspection, status dashboards, settings, and flashing |
| Security model | Private key stays on the wearable; phone handles public data, unsigned requests, signed payloads, and network submission |
See UPDATE_LOG.md for the Prototype V2 SolWearOS visual refactor, GM/GN watchfaces, NFC signing updates, and mobile companion changes.
| Component | Part |
|---|---|
| MCU | Lolin ESP32-S3 Mini |
| Display | ST7789 240 x 240 IPS over SPI |
| NFC | PN532 over I2C |
| Power | TP4056 charger with 350 mAh LiPo |
| Input | Four active-low tactile buttons |
| Storage | NVS for wallet material, SPIFFS for receipts and game state |
SolWear is Solana-first. The Android companion app connects to Solana RPC, reads the wearable wallet public key, displays SOL balance and price context, builds a native System Program transfer, sends the unsigned transaction to the wearable for offline Ed25519 signing, then submits the signed transaction back to Solana and polls confirmation status.
Relevant implementation and docs:
mobile/app/src/main/java/com/solwear/mobile/data/solana/SolanaRepository.ktwraps Solana JSON-RPC calls for balances, blockhashes, transaction submission, and confirmation checks.mobile/app/src/main/java/com/solwear/mobile/viewmodel/WalletViewModel.ktvalidates addresses, builds transfer bytes, requests hardware signing over NFC, injects the signature, and broadcasts the transaction.mobile/app/src/main/java/com/solwear/mobile/nfc/NfcSessionManager.ktmanages the phone-side NFC signing session.mobile/docs/NFC_PROTOCOL_NDEF.mddocuments the NFC signing protocol.mobile/docs/SOLANA_TX_FLOW.mddocuments the transaction lifecycle.
cd firmware
idf.py set-target esp32s3
idf.py build
idf.py -p COM_PORT flash monitorReplace COM_PORT with your board serial port.
Open mobile/ in Android Studio and let Gradle sync, or build from the command line:
cd mobile
./gradlew assembleDebugUse an NFC-capable Android phone for the watch pairing and signing demo.
cd service-tool
pip install -r requirements.txt
python main.pycd website
npm install
npm run devThe website can also be run with Docker:
cd website
docker-compose up --build- Website: https://solwear.tech
- X: https://x.com/SolWear_
- Instagram: https://instagram.com/solwear.watch
- TikTok: https://tiktok.com/@solwear