A secure, local desktop wallet for Interchained (ITC) cryptocurrency built with Electron.
The Interchained Desktop Wallet is designed as a secure access layer to the Interchained ecosystem — not just a transaction tool.
Contact @interchained on TG I vibe coded this GUI entirely with AiAS (Ai Assist Secure) App Builder using Claude (Haiku,Opus && Sonnet) && GPT-5.2 (codex max && 5.2-pro) under advisory by GPT-5.2-thinking
It prioritizes:
- Local control
- Bitcoin Core–style security assumptions
- Clear separation between UI and key custody
- A future path toward AI-assisted interaction (AiAS)
This wallet is intentionally conservative by default, with extensibility built in.
- Manage ITC and wITC
- Send / receive transactions
- Bake for yield
- Bridge cross-chain
- Interact with the ecosystem using AI guidance (AiAS)
- aiassist.net
- earn.interchained.org
- elarawallet.com
Production-ready, actively developed.
- QUICKSTART.md - Get up and running in 5 minutes
- DEVELOPMENT.md - Developer onboarding and workflow
- ARCHITECTURE.md - System design and technical details
- DIAGRAMS.md - Visual architecture diagrams
- DEPLOYMENT.md - Production builds and distribution
- SECURITY.md - Security audit checklist
- STATUS.md - Current project status and roadmap
# 1. Install dependencies
pnpm install
# 2. Start your interchainedd node
interchainedd -daemon
# 3. Run the Electron wallet
pnpm dev:studio
# 4. Enter your RPC credentials and connectSee QUICKSTART.md for detailed instructions.
Monorepo structure with shared components and dual runtime targets:
├── packages/
│ └── itc-rpc/ # Bitcoin Core 0.21.0 compatible RPC client
│ ├── src/
│ │ ├── client.ts # JSON-RPC implementation
│ │ ├── types.ts # Type definitions & Zod schemas
│ │ └── index.ts
│ └── package.json
├── apps/
│ └── studio/ # Electron desktop application
│ ├── src/
│ │ ├── main/ # Electron main processfv
│ │ ├── preload/ # Secure IPC bridge
│ │ └── renderer/ # React UI
│ └── package.json
Critical Security Features:
- No private keys in app - All keys managed by interchainedd node
- Credentials encrypted - RPC auth stored in Electron's safeStorage (system keychain)
- Context isolation - Renderer process cannot access Node.js APIs directly
- Validated IPC - All RPC calls go through secure preload bridge
- HTTP Basic Auth - Standard Bitcoin Core authentication
You must have a local interchainedd node running with:
- RPC server enabled
- Wallet loaded
- Authentication configured
Example interchained.conf:
server=1
rpcuser=your_rpc_username
rpcpassword=your_secure_password
rpcport=8332
rpcbind=127.0.0.1
rpcallowip=127.0.0.1
- Node.js 22+
- pnpm (package manager)
# Install dependencies
pnpm install
# Build shared packages
cd packages/itc-rpc && pnpm build# From root
pnpm dev:studio
# Or from apps/studio
cd apps/studio
pnpm devThe Electron app will:
- Launch with a connection screen
- Prompt for RPC credentials
- Test connection to your node
- Store credentials securely
- Load the wallet interface
This wallet is local RPC Electron-only by design.
A browser-based wallet is intentionally not provided due to security constraints around RPC access, credential storage, and local node interaction.
- Launch the app - You'll see the settings screen
- Enter RPC details:
- Host:
127.0.0.1 - Port:
8332(default Bitcoin/ITC port) - Username: Your
rpcuser - Password: Your
rpcpassword - Wallet: (optional, leave empty for default wallet)
- Host:
- Click Connect - App will test the connection
- View total balance (trusted, pending, immature)
- See wallet info (tx count, keypool, sync status)
- Monitor blockchain sync progress
- Enter recipient address
- Specify amount in ITC
- Add optional description
- Choose transaction priority
- Send with confirmation
- Generate new receiving addresses
- Label addresses for organization
- View QR codes (placeholder)
- Copy addresses to clipboard
- View transaction history
- See confirmations, amounts, dates
- Filter by type (send/receive/generate)
- Modify RPC connection settings
- Test new connections
- View current configuration
All methods are Bitcoin Core 0.21.0 compatible:
| Method | Purpose | Used In |
|---|---|---|
getblockchaininfo |
Sync status, block height | Overview |
getnetworkinfo |
Network connections | Overview |
getwalletinfo |
Wallet metadata | Overview |
getbalances |
Detailed balance breakdown | Overview |
getbalance |
Total balance | Overview |
getnewaddress |
Generate receiving address | Receive |
listtransactions |
Transaction history | Activity |
sendtoaddress |
Send ITC | Send |
Type-safe RPC client with:
- Zod schema validation
- Error handling (RPCError, RPCConnectionError)
- Bitcoin Core method signatures
- HTTP Basic Auth
Electron main process:
index.ts- App lifecycle, window managementrpc-bridge.ts- IPC handlers, credential encryption
Secure IPC bridge:
- Exposes
window.electronAPI.rpcto renderer - No direct Node.js access for renderer
React UI components:
wallet/wallet.tsx- Main containerwallet/overview.tsx- Balance displaywallet/send.tsx- Send formwallet/receive.tsx- Address generationwallet/activity.tsx- Transaction listwallet/settings.tsx- RPC configuration
# Electron app
cd apps/studio
pnpm buildNote: For distributable Electron packages, you'll need to add electron-builder back to apps/studio/package.json and configure build targets.
- Add types to
packages/itc-rpc/src/types.ts - Add method to
packages/itc-rpc/src/client.ts - Add IPC handler to
apps/studio/src/main/rpc-bridge.ts - Add to preload API in
apps/studio/src/preload/index.ts - Use in React components
# Ensure interchainedd is running
interchainedd -daemon
# Check RPC is working
interchained-cli -rpcuser=youruser -rpcpassword=yourpass getblockchaininfo
# Launch wallet
pnpm dev:studio- Context isolation enabled
- No nodeIntegration in renderer
- Preload script for IPC only
- Credentials encrypted with safeStorage
- No private keys in app
- All RPC calls server-side (main process)
- Input validation on IPC boundaries
- HTTPS not needed (localhost only)
- No multi-wallet support yet (can specify wallet name only)
- QR code generation not implemented (placeholder shown)
- Fee estimation shows UI but uses defaults
- Transaction details limited to list view
- No hardware wallet support (Mode A only)
- Local key management
- HD wallet support
- Seed phrase backup
- Hardware wallet integration
- Multi-wallet support
- Advanced coin control
- PSBT support
- Lightning Network integration
- Custom fee estimation
- Transaction batching
- Ensure you've connected via Settings tab
- Check interchainedd is running
- Verify RPC credentials
- Check
rpcportin interchained.conf - Verify
rpcbindallows 127.0.0.1 - Ensure daemon is running
- Verify rpcuser and rpcpassword match interchained.conf
- Restart interchainedd after config changes
- Run
pnpm installin apps/studio - Check for port conflicts (default: 5174)
- Look for errors in terminal
MIT
This is a reference implementation. For production use:
- Add comprehensive error handling
- Implement proper logging
- Add unit and integration tests
- Security audit
- User testing