A privacy-first Android browser for the decentralized web
Built on GeckoView · Powered by a native Rust P2P node · Resolves .kin domains
Kinetic is an Android browser that bridges the standard internet and the Kinetic decentralized network — a peer-to-peer system with its own domain namespace (.kin). It gives users a single browser that works seamlessly across both worlds, with no compromise on speed, privacy, or control.
Unlike conventional browsers, Kinetic runs a native Rust P2P daemon directly on-device. There are no centralized DNS servers, no third-party resolvers, and no telemetry.
- Resolves standard internet URLs via GeckoView (full Gecko web engine, same as Firefox)
- Natively resolves
.kindomains through the on-device P2P node — no external DNS - Supports
kin://custom URI scheme for direct deep linking into the network
- A full Kinetic network node runs in-process using Rust via JNI
- Connects directly to the Kinetic peer-to-peer network on app start
- Handles
.kinname resolution, network sync, and DHT participation locally - No centralized servers, no cloud dependency, no telemetry
- No tracking, no analytics, no crash reporting sent to any server
- DuckDuckGo set as default search engine
- Google available as an opt-in toggle on the home screen
- Built with
minSdk = 33(Android 13+) — modern security model only
- Served locally by an embedded HTTP server — loads instantly with zero network requests
- One-tap search engine switching (DuckDuckGo ↔ Google) directly on the home screen
- Quick shortcuts: Bookmarks, History, Downloads, Kinetic Network Explorer
.kinnetwork discovery cards:atlas.kin,blog.kin,chat.kin,forum.kin
- Full multi-tab switcher with live rendered tab screenshots
- Swipe-to-close and one-tap tab switching
- Active tab highlighted with accent border
- Unified search + URL bar with intelligent suggestion engine
- Suggestions sourced from: search engine, bookmarks, history, clipboard, and
.kindomain hints - Clipboard URL auto-detection with one-tap open banner
- Integrated download manager using Android
DownloadManager - Downloads saved to standard
Downloadsfolder - Download progress tracked natively
- Full bookmark management: add, view, delete
- Persistent browsing history with search
- Both stored in
SharedPreferences— no external database dependency
- Material You dynamic theming (Android 13+) via adaptive icon monochrome layer
- Custom 2D dual-tone vector mark: Kinetic Purple
#7C3AED+ Electric Violet#8B5CF6+ Cyan#06B6D4 - Ships as
arm64-v8a,armeabi-v7a, andx86_64separate APKs — no bloated universal bundle
kinetic-android/
├── app/ # Main application (Kotlin)
│ ├── MainActivity.kt # Browser UI, tab management, omnibox, downloads
│ ├── KineticApplication.kt # GeckoRuntime + KineticNode initialisation
│ ├── KineticLocalServer.kt # Embedded HTTP server for home.kin
│ ├── SuggestionProvider.kt # Omnibox suggestions (search, history, bookmarks, .kin)
│ ├── BrowserStorage.kt # Bookmark and history persistence
│ └── NetworkRegistryService.kt # .kin registry sync from P2P node
│
├── ui/ # Android library — GeckoView dependency bridge
│
├── p2p/ # Android library — Rust JNI bridge
│ └── src/main/rust/ # Kinetic P2P daemon (Rust)
│ └── Cargo.toml # kinetic-core, kinetic-network, kinetic-storage, libp2p
│
└── vendor/kinetic/ # Kinetic protocol crates (git submodule)
├── kinetic-core/
├── kinetic-network/
├── kinetic-storage/
├── kinetic-kid/
├── kinetic-types/
├── kinetic-verify/
└── kinetic-vdfrs/
| Layer | Technology |
|---|---|
| Web Engine | GeckoView 153 (same engine as Firefox) |
| Language | Kotlin (app) + Rust (P2P daemon) |
| P2P Networking | libp2p 0.53, QUIC, TLS 1.3 |
| JNI Bridge | Rust jni crate via cargo-ndk |
| UI | Native Android Views — no Compose, no React Native |
| Storage | SharedPreferences (bookmarks, history, settings) |
| Build | Gradle 9.6 + Kotlin DSL + cargo-ndk |
- Android Studio Hedgehog or later
- Android NDK
26.1.10909125 - Rust toolchain with
cargo-ndk:rustup target add aarch64-linux-android cargo install cargo-ndk
git clone --recurse-submodules https://github.com/your-org/kinetic-android.git
cd kinetic-android./gradlew assembleDebug./gradlew assembleReleaseOutput APKs:
app/build/outputs/apk/release/app-arm64-v8a-release.apk— Modern phones (recommended)app/build/outputs/apk/release/app-armeabi-v7a-release.apk— Legacy 32-bit devicesapp/build/outputs/apk/release/app-x86_64-release.apk— Emulators / ChromeOS
Recommended: Download app-arm64-v8a-release.apk from Releases.
Works on any Android 13+ phone (Samsung, Pixel, Nothing, OnePlus, etc.)
Enable Install from Unknown Sources in your Android settings, then open the APK.
| APK | Architecture | Size |
|---|---|---|
app-arm64-v8a-release.apk |
64-bit ARM (modern phones) | ~195 MB |
app-armeabi-v7a-release.apk |
32-bit ARM (older phones) | ~150 MB |
app-x86_64-release.apk |
x86_64 (emulators) | ~206 MB |
The APK is large because it bundles GeckoView — the full Firefox web engine — to ensure complete web compatibility. No network download occurs at install time.
| Permission | Reason |
|---|---|
INTERNET |
Web browsing and P2P network connectivity |
CAMERA |
Web camera access for sites that request it |
RECORD_AUDIO |
Web microphone access for sites that request it |
ACCESS_FINE_LOCATION |
Web geolocation for sites that request it |
POST_NOTIFICATIONS |
Download completion notifications |
MIT License — see LICENSE for details.
Built with 🦀 Rust and ❤️ for the decentralized web