Mango is a non-custodial Bitcoin wallet built with SwiftUI. It is focused on self-custody, simple UX, and local-first security controls.
Status: pre-release.
- Non-custodial wallet model (you control keys and recovery phrase).
- Bitcoin-only workflow with send/receive, fee estimation, and sync.
- Local biometric/device authentication for sensitive actions.
- Encrypted key material and encrypted recovery-phrase export support.
- Background sync and local transaction metadata (notes, tags).
- English and German localization.
- Private key material is encrypted at rest using device-secured storage.
- Recovery phrase storage uses encrypted local persistence and Keychain-backed secrets.
- Telemetry is opt-in and defaults to disabled.
- No hardcoded API credentials are required to run the app.
- CI now includes automated secret scanning (
.github/workflows/secret-scan.yml).
If you find a vulnerability, please report it privately to the maintainers.
The project follows MVVM with service-based boundaries and dependency injection.
Mango/Mango/AppContainer.swift: dependency wiring and service composition.Mango/Mango/Features/: SwiftUI views + view models per feature.Mango/Mango/Services/: wallet, networking, sync, key management, telemetry.Mango/Mango/Domain/: domain models and wallet/network configuration.Mango/MangoTests/: unit tests for core services.
- Xcode 15.2 or newer (CI currently uses Xcode 15.2).
- Swift toolchain supported by your installed Xcode.
- iOS simulator/device runtime matching the project deployment target in
Mango/Mango.xcodeproj.
- Clone the repository.
git clone https://github.com/<your-org>/Mango.git cd Mango
- Open the project.
open Mango/Mango.xcodeproj
- Let Swift Package Manager resolve dependencies.
- Build and run the
Mangoscheme.
- Run tests:
xcodebuild test -project Mango/Mango.xcodeproj -scheme Mango -destination 'platform=iOS Simulator,name=iPhone 15,OS=latest'
- Build:
xcodebuild build -project Mango/Mango.xcodeproj -scheme Mango -destination 'platform=iOS Simulator,name=iPhone 15,OS=latest'
- Blockchain APIs:
mempool.spaceandblockstream.infoendpoints. - Fiat price API: CoinGecko.
- Major packages: GRDB, swift-bitcoin/secp256k1 stack, Swift standard ecosystem packages.
No API key setup is required for local development by default.
Before publishing:
- Run a secret scan locally and ensure CI passes secret scan checks.
- Confirm no credential files are present (
.env,.pem,.p12, private keys). - Verify telemetry default and consent behavior are unchanged.
Licensed under MIT. See LICENSE.



