A premium, open-source mobile wallet for Bitcoin (BTC) and Interchained (ITC). Real cryptography. Zero custody. A gold honeycomb interface that treats your money like it matters.
Most wallets ask you to trust them. Elara asks you to trust math.
Every key is generated on your device, encrypted on your device, and signed on your device. No server holds your seed. No company holds your coins. No one can freeze, seize, or read what is yours. This is what self-custody was supposed to feel like — and now the source is open, so you never have to take our word for it.
📖 Read the manifesto → LORE.md — why Elara exists, and why you should build on it.
Warning
Non-custodial software. You alone are responsible for your keys, seed phrases, and funds. Read the code. Test with small amounts first. There is no "forgot password."
- Features
- Security Model
- Architecture
- Tech Stack
- Quick Start
- Building for Mobile
- Project Structure
- Configuration
- Roadmap
- Contributing
- License
| 🪙 Multi-Coin | Native Bitcoin (BTC) and Interchained (ITC) support |
| 🔐 Real Cryptography | BIP39 seed phrases, BIP32 HD derivation, on-device signing |
| ⚡ Lightning Mode | Simplified WIF-only wallets — one address per coin, zero rotation |
| 🌳 Full HD Wallets | BIP84 / BIP49 / BIP44 / P2PKH multi-path import & scanning |
| 👁️ Watch-Only | Monitor any address without exposing private keys |
| 📲 Send & Receive | QR scan & generate, live fee estimation, VWAP pricing, fee breakdowns |
| 🔔 Smart Notifications | Price alerts + incoming/confirmed transaction pushes |
| 📈 Live Prices | HTTPS polling with offline caching via service worker |
| 🗂️ Multi-Wallet | Create, import, switch & delete wallets with isolated caches |
| 🛡️ Layered Security | 6-digit PIN, biometric unlock, encrypted local storage |
| 🐝 Gold Honeycomb UI | Banking-grade clarity, 4D depth, fluid motion, WCAG 2.1 AA |
| 🤖 Android Aceternity Skin | GPU-friendly animated borders, spotlight & meteor effects, foldable-safe |
Elara is built on a single principle: the app should never be able to betray you.
- On-device key generation. Seeds and private keys are created using the device's secure crypto APIs — never on a server.
- Encrypted at rest. Keys are encrypted locally; the PIN and biometrics gate every unlock.
- No custody, no backdoor. Elara cannot freeze, seize, read, or recover your funds. There is no admin key.
- Auditable by design. Every line that touches your keys lives in this repository. No black boxes.
- No telemetry on your secrets. Your seed phrase never leaves your device. Network calls are limited to ElectrumX nodes and public price feeds.
Important
Back up your seed phrase offline. It is the only way to recover your wallet. Write it down, store it somewhere safe, and never share it with anyone — including anyone claiming to be support.
┌─────────────────────────────────────────────┐
│ Svelte + TypeScript UI │
│ Screens · Components · Stores · Gold Skin │
└───────────────────────┬─────────────────────┘
│
┌───────────────────────┴─────────────────────┐
│ Service Layer │
│ Crypto · Balance · Price · Indexer · Notify │
└───────────────────────┬─────────────────────┘
│
┌─────────────────────────────┴────────────────────────────┐
│ bitcoinjs-lib · interchainedjs-lib · BIP32/39 · secp256k1 │
└─────────────────────────────┬────────────────────────────┘
│
┌───────────────────────┴─────────────────────┐
│ Capacitor Native Bridge (iOS/Android) │
│ ElectrumX TCP/TLS · Biometrics · Storage │
└───────────────────────────────────────────────┘
Highlights
- Three-phase Send pipeline (
PREPARE → FILTER → FINALIZE) for fast, reliable UTXO selection. - Optimized transaction indexer with rate-limited batch fetching, smart caching, and resume-on-interruption.
- Direct ElectrumX over TCP/TLS via a custom Capacitor plugin (
@elara/capacitor-electrum-tcp) — no centralized backend. - Blue Wallet-compatible 20+20 gap-limit scanning across all BTC derivation paths.
| Layer | Technology |
|---|---|
| Native shell | Capacitor (iOS + Android) |
| UI framework | Svelte 4 + TypeScript |
| Build tool | Vite 5 |
| Bitcoin | bitcoinjs-lib, bip32, bip39, ecpair, tiny-secp256k1 |
| Interchained | interchainedjs-lib |
| Networking | ElectrumX (TCP/TLS) via custom Capacitor plugin |
| QR | html5-qrcode (scan) · qrcode (generate) |
- Node.js 18+ and npm
- Android Studio + JDK 17 (for Android builds)
- Xcode (for iOS builds, macOS only)
# 1. Install dependencies
npm install
# 2. Set up your environment
cp .env.example .env # then add your API keys (all optional)
# 3. Launch the dev server
npm run dev # open the printed local URL💡 The browser dev server is the fastest way to iterate on the UI. Native features (biometrics, TCP sockets) require a device build.
Production web build:
npm run buildThe web app is built with Vite, then synced into the native shell with Capacitor.
npm run cap:vite # build web assets → dist/
npm run cap:sync # sync into the Android project
npm run android:open # open in Android Studio to run / buildRelease builds require your own signing keystore:
keytool -genkeypair -v -keystore my-release-key.jks \
-keyalg RSA -keysize 2048 -validity 10000 -alias my-key-aliasProvide the signing details via environment variables (see .env.example) before a release build.
Caution
Never commit your keystore, passwords, or .env file. They are git-ignored by default — keep it that way.
elara_shipping/
├── src/
│ ├── components/ # Reusable UI components
│ ├── screens/ # Page-level screens (Dashboard, Send, Receive, …)
│ ├── services/ # Crypto, balance, price, indexer, notifications
│ ├── stores/ # Svelte writable stores (state management)
│ ├── styles/ # Design system, themes, android-skin.css
│ └── utils/ # Helpers (device detection, formatting, …)
├── public/ # Static assets + service worker
├── android/ # Capacitor Android project (no signing keys)
├── capacitor-electrum-tcp/ # Custom Capacitor plugin — ElectrumX TCP/TLS
├── webpack/ # Browser shims/polyfills for crypto libs
├── patches/ # patch-package patches
├── capacitor.config.ts
├── vite.config.mts
├── .env.example
└── LICENSE
All runtime credentials are supplied via environment variables — copy .env.example to .env and fill in what you need. Every key is optional; features that depend on a missing key simply disable themselves.
| Variable | Powers | Required? |
|---|---|---|
VITE_AIASSIST_API_KEY / VITE_AIASSIST_SALT |
Malachi AI concierge | Optional |
VITE_CHANGENOW_API_KEY |
In-app crypto swaps | Optional |
VITE_REVENUECAT_ANDROID_KEY / VITE_REVENUECAT_IOS_KEY |
Premium subscriptions | Optional |
- Additional chain modules (fork-friendly coin adapters)
- Hardware wallet signing support
- In-app multi-language (i18n)
- Lightning Network channels
- Reproducible builds
Have an idea? Open an issue — the comb has an empty cell with your name on it.
Pull requests are welcome. By contributing you agree your work is licensed under the project's GPL-3.0-or-later license.
# Fork → branch → build → PR
git checkout -b feat/your-idea
npm install && npm run dev
# make it better, then open a PRGuidelines
- Keep changes focused and well-described.
- Match the existing code style and the gold-honeycomb design language.
- Never commit secrets, keys, or
.envfiles. - For anything that touches signing or key handling, explain your reasoning in the PR — security is reviewed carefully.
Elara Wallet is dual-licensed.
Free to use, study, modify, and distribute under the GNU General Public License v3. If you distribute Elara or a derivative, your work must also be open under the GPL.
SPDX-License-Identifier: GPL-3.0-or-later
Want to use Elara (or any part of its codebase) in a closed-source, proprietary, white-label, or embedded product without GPL obligations? A separate commercial license is available from Interchained LLC.
Elara Wallet is provided without warranty. Cryptocurrency software carries risk — always review, test, and secure your own use before relying on it for real funds.
⬡ Hold your keys. Build the comb. Keep it open.
Made with 🐝 and gold by Interchained LLC
dev@interchained.org