Android-only, open-source app that runs a Quantus Network (QTC) full node on a phone.
Purpose: decentralization, not profit. This node does not mine and earns no rewards. It syncs, verifies every block itself, and relays data to peers — so the network depends a little less on a small number of servers, and a little more on ordinary people with hardware they already own.
The design concept is to make the node's pulse visible: live block/peer visualization with a quiet "presence" (KEHAI) design, and a local record of your contribution.
| Current release | v3.0.2 (versionCode 63), published 2026-11-14 — release page |
| First public release | v0.1.0, published 2026-11-04 |
| Download | Signed APK from GitHub Releases |
| Requirements | Android 12 or later, arm64 device |
| Verified device | Pixel 9a running GrapheneOS |
| Languages | 9 (329 strings per language; see docs/I18N.md; native-speaker improvements are very welcome) |
| Telemetry listing | Opt-in only (off by default) |
| Licence | Apache License 2.0 |
- It is a non-validator full node for Quantus mainnet: it syncs, verifies every block itself, and relays data to peers.
- It is not a miner. It does not mine and earns no rewards.
- It is not a wallet. It never handles wallet seed phrases or reward keys; the only secrets on the device are identity keys, and neither controls any assets (see "Security first" below).
- New in v3.0 — activity recording (DePIN), built in. Opt-in and off by default. With it on, the app keeps a signed record of the node's uptime and relay work, which you can export as a proof bundle file whenever you choose.
- A hotfix release: the bundled node binary is rebuilt (the first binary change since versionCode 10). No feature changes, no new permissions, and no changes to the app code, the node launch arguments or the database.
- On some devices (reported on a Xiaomi phone) a node could stall permanently — stuck far behind the tip with peers dropping to zero — because the node's Wasm runtime reserved its memory pool with a single 258 GiB virtual-memory mapping that the device refused; after that, every block verification failed. The rebuilt binary creates runtime instances on demand instead of reserving the pool. Block validation itself is unchanged.
- Details: CHANGELOG.md.
- A maintenance release with audit fixes only — no feature changes, no new permissions, and no changes to the node launch arguments, the database or the bundled node binary.
- A fourth round of external audit and an internal review of the v3.0 tree fixed a set of defects in the activity-recording and identity-transfer machinery — among them: turning recording off right after turning it on could leave recording running while the display showed off; a journal filled to exactly the maximum could no longer be exported; and exporting a proof bundle could create a fresh identity seed as a side effect after the home identity had been sent out.
- Every verified finding is fixed; one display item that needs new UI strings in all nine languages is left for a later release. Details: CHANGELOG.md.
- Activity recording (DePIN) is built into the node app — the standalone companion app's role is complete. Recording writes a signed checkpoint every 10 minutes to an on-device journal; the identity seed is kept in an encrypted vault; an existing identity — key and full history — moves between installs in a single one-file exchange.
- The main screens are redesigned around a three-tab bottom navigation (home, connection, membership card). Home shows the live QTC price next to the pulse and the node state; the connection tab draws the node's network field in place of the previous radar-style figure; the membership card carries your member number (device ID) and three headline figures from your local record — no rankings, and the record is never converted into money.
- Sync stall recovery. The node service detects a stalled sync — the network tip advancing while the best block stays frozen — and restarts the node on its own (at most three times in 24 hours), with sync debug logging enabled so this class of stall leaves evidence.
- Three rounds of pre-release final check, with no critical findings in any round and every verified finding fixed before release.
Details and the full version history: CHANGELOG.md.
Get the signed APK from GitHub Releases. The current release is v3.0.1; its APK size and SHA-256 are listed on the release page and in the CHANGELOG, so you can verify your download. v3.0.1 installs over v3.0 keeping settings and synced data — the same code is verified in place on the reference device.
New to the app? Start with the Usage Guide — available in all 9 languages the app speaks: English, 日本語, 简体中文, Español, हिन्दी, العربية, 한국어, Русский, Français. Requirements, installation, the first sync, settings, and troubleshooting.
- Publicly released since 2026-11-04; the current release is v3.0.1 (above). Per-version details live in the CHANGELOG, not here.
- Still being watched on the reference device: the remaining on-device checks — where the pruned database size plateaus, and battery/heat over long uptimes.
- Release gates: docs/RELEASE.md. Design: docs/DESIGN.md.
- A non-validator full node for Quantus mainnet: sync, verify, relay, local status.
- No mining. No wallet. The app never handles seed phrases or reward keys — by design, there is no asset secret inside the app worth stealing.
- Devices: not Pixel-only. Requirements: Android 12+ on arm64 — the implementation has no Google-services or Pixel-specific dependency (it runs on GrapheneOS, which ships without Google services). Verified so far: Pixel 9a running GrapheneOS. Other devices are expected to work but are unverified; OEM battery savers (Samsung, Xiaomi, …) may stop the resident service. Device reports via GitHub Issues are welcome — the verified list grows from them.
- Upstream:
quantus-nodev1.0.5 (Quantus-Network/chain), Substrate-based, QPoW / Poseidon2, ML-DSA signatures. - The node cross-builds for
aarch64-linux-android. Two small patches are needed, both in patches/: one makes explicit pruning values take effect (next bullet), and one stops DNS resolution from panicking when the node runs as a plain process outside an Android app runtime (vendoredndk-context/hickory-resolverwith a fallback). The build recipe is fixed in docs/BUILD-android.md. Release-profile binary: ~53 MB stripped (debug: ~123 MB). - Upstream forces archive storage on all nodes; a minimal patch (respect explicit numeric pruning) enables a phone-sized database. Details in the design doc.
- Official minimum specs list 100 GB storage (validator-oriented); a pruned non-validator node is far smaller in practice. Measured on a Pixel 9a after a full sync (2026-11-05): 1.30 GB in total (96 MB app + 1.20 GB of node data). Where it plateaus over months is still being watched.
- Phase 0: feasibility spikes (mainnet DB size with warp + pruning; Android port blockers)
- Phase 1: node MVP (sync/verify/relay, status UI, foreground service)
- Phase 2: daily-driver hardening (power, data, storage caps; GrapheneOS soak tests)
- Phase 3: security review, reproducible builds, public release prep
- Phase 4: mainnet release and wider Android device support
The secrets on the device are identity keys only: the node's P2P identity key, and — only when DePIN activity recording is turned on — the participation identity seed, stored encrypted in app-private storage. Neither controls any assets. Both are excluded from cloud backup (allowBackup=false). RPC stays on loopback only. No analytics, no ads, no remote code loading — native code ships inside the signed APK only. Distribution is signed APKs on GitHub Releases, gated by docs/RELEASE.md; an F-Droid listing is planned for a later phase.
Apache License 2.0 — see LICENSE. (The upstream node's crates declare Apache-2.0; its repository root LICENSE is MIT — the two are compatible for this use, and this app itself is Apache-2.0.)
Quantus Node for Android is a personal open-source project, developed for the love of decentralization. If it is useful to you, donations in QTC are gratefully received:
qzoqy3pcLsBcPpGFqj9BTv3UyvRB9o8ScnKqcQfSbQTR6odnu