Why Ikki • Screenshots • Features • Quick Start • Architecture • Development • Security
Ikki combines the privacy guarantees of Zcash with a modern consumer-grade experience. Built with Tauri and Svelte, it delivers native performance, responsive layouts, and a dark interface designed for uninterrupted mobile-first usage.
Status: Testnet only. Do not use with real funds.
- Confidence: shielded transactions by default with unified addresses.
- Clarity: focused flows for sending, receiving, and reviewing history.
- Responsiveness: lightwalletd-backed sync with optimistic balance updates.
Wallet
- BIP-39 24-word seed phrases with HD derivation
- Unified addresses spanning Orchard and Sapling
- Diversified addresses to keep payments unlinkable
- Fast sync using lightwalletd compact blocks
Privacy
- Shielded-only transactions by design
- 512-byte encrypted memos
- No analytics or telemetry hooks
Experience
- Premium dark theme tuned for readability
- QR code scanning and generation
- Real-time background sync with progress and optimistic balances
- Transaction history grouped by date
- Node.js 18+
- Rust 1.81+
- Tauri prerequisites for your platform
git clone https://github.com/AbdelStark/ikki.git
cd ikki
npm install
npm run tauri devnpm run tauri buildArtifacts are written to src-tauri/target/release/.
- If builds fail on macOS or Windows, re-run the Tauri prerequisites and restart your shell.
- Ensure Rust toolchain is up to date:
rustup update stable. - Delete
src-tauri/targetwhen changing Rust toolchains to avoid stale artifacts.
┌─────────────────────────────────────────────────────────────┐
│ Svelte Frontend │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌───────────────┐ │
│ │ wallet │ │ ui │ │ send │ │ transaction │ │
│ │ store │ │ store │ │ store │ │ store │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └───────┬───────┘ │
└───────┼────────────┼────────────┼───────────────┼──────────┘
└────────────┴────────────┴───────────────┘
│
Tauri IPC Bridge
│
┌─────────────────────────────┴───────────────────────────────┐
│ Rust Backend │
│ ┌──────────────────┐ ┌─────────────────────────────┐ │
│ │ AppState │────▶│ IkkiWallet │ │
│ │ (Tauri State) │ │ ┌─────────────────────┐ │ │
│ └──────────────────┘ │ │ zcash_client_* │ │ │
│ │ └──────────┬──────────┘ │ │
│ └─────────────┼───────────────┘ │
└─────────────────────────────────────────┼───────────────────┘
│
lightwalletd (gRPC)
│
┌──────────┴──────────┐
│ Zcash Testnet │
└─────────────────────┘
| Layer | Technology |
|---|---|
| Frontend | Svelte 5, TypeScript, Vite |
| Backend | Rust, Tauri 2 |
| Zcash | zcash_client_backend, zcash_client_sqlite, zcash_proofs |
| Network | lightwalletd via gRPC/TLS |
~/.ikki/
├── wallet.db # SQLite (zcash_client_sqlite)
├── wallet_config.json # Seed storage
└── wallet.db-wal # WAL journal
ikki/
├── src/ # Svelte frontend
│ ├── lib/
│ │ ├── components/ # UI components
│ │ ├── stores/ # State management
│ │ └── utils/ # Tauri bridge
│ └── routes/ # Pages
├── src-tauri/ # Rust backend
│ └── src/
│ ├── commands/ # IPC handlers
│ ├── wallet/ # Core wallet
│ └── state.rs # App state
├── tools/
│ └── ikki-mcp/ # MCP server for Claude Code
└── public/ # Static assets
npm run dev # Vite dev server
npm run build # Build frontend
npm run tauri dev # Development mode
npm run tauri build # Production buildIkki ships an MCP (Model Context Protocol) server for UI automation. It allows screenshot capture, clicking, and typing within the app window.
Setup:
cd tools/ikki-mcp
bun installRegister with Claude Code:
claude mcp add ikki-automation --scope project -- bun run /path/to/ikki/tools/ikki-mcp/src/index.tsOr add to .mcp.json manually:
{
"mcpServers": {
"ikki-automation": {
"type": "stdio",
"command": "bun",
"args": ["run", "/path/to/ikki/tools/ikki-mcp/src/index.ts"]
}
}
}Available tools:
| Tool | Description |
|---|---|
screenshot |
Capture the app window as base64 image |
click |
Click at window-relative coordinates |
type |
Type text or press special keys |
get_window_info |
Get window position, size, and state |
Requirements:
- macOS with Accessibility and Screen Recording permissions granted to your terminal
- The Ikki app must be running (
npm run tauri devor production build)
| Frontend | Purpose |
|---|---|
Home.svelte |
Dashboard with balance |
Send.svelte |
Transaction creation |
Receive.svelte |
QR code + addresses |
History.svelte |
Transaction list |
| Backend | Purpose |
|---|---|
wallet/core.rs |
Wallet operations |
commands/wallet.rs |
Wallet IPC handlers |
commands/transactions.rs |
Transaction handlers |
Current implementation:
- Seed stored locally in
~/.ikki/wallet_config.json - File permissions
0600(Unix) - TLS for all lightwalletd connections
Operational tips:
- Back up your seed phrase offline.
- Use testnet only.
- Verify addresses before sending.
Reset wallet:
rm -rf ~/.ikki/| Variable | Default | Description |
|---|---|---|
RUST_LOG |
info |
Log level |
Server: testnet.zec.rocks:443 (configurable in wallet/config.rs).
- Fork the repo.
- Create a branch (
git checkout -b feature/xyz). - Commit changes.
- Push and open a PR.
MIT — see LICENSE.
- Zcash Foundation — zcash-client libraries
- Electric Coin Company — Zcash protocol
- Tauri — native app framework
- Svelte — reactive UI
Built for privacy.