permissionlesstech/bitchat-androidPublic

decentralized mesh chat

AI summary: A native Android client for the decentralized, permissionless Bitchat messaging protocol.

Stars
7.3K
+19 today
Forks
1.8K
Watchers
93
Open issues
212
Open PRs
82
Contributors
~56
Commits
767
Branches
116

KotlinGPL-3.0Created Jul 8, 2025Last push 4d agoLatest release 1.7.4+169 stars this week+357 this month

Star history

since Jul 6, 2025
02K4K6KJul 2025Nov 2025Mar 2026Aug 2026
7.3K stars as of Aug 7, 2026, tracked back to Jul 6, 2025. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulAugMonWedFri2025-08-10: 0 commits2025-08-11: 1 commit2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 1 commit2025-08-17: 0 commits2025-08-18: 1 commit2025-08-19: 1 commit2025-08-20: 2 commits2025-08-21: 1 commit2025-08-22: 8 commits2025-08-23: 9 commits2025-08-24: 3 commits2025-08-25: 2 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 5 commits2025-08-29: 13 commits2025-08-30: 3 commits2025-08-31: 2 commits2025-09-01: 0 commits2025-09-02: 4 commits2025-09-03: 1 commit2025-09-04: 0 commits2025-09-05: 3 commits2025-09-06: 5 commits2025-09-07: 3 commits2025-09-08: 4 commits2025-09-09: 1 commit2025-09-10: 0 commits2025-09-11: 2 commits2025-09-12: 0 commits2025-09-13: 1 commit2025-09-14: 15 commits2025-09-15: 3 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 1 commit2025-09-20: 1 commit2025-09-21: 1 commit2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 1 commit2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 1 commit2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 1 commit2025-10-12: 4 commits2025-10-13: 0 commits2025-10-14: 1 commit2025-10-15: 0 commits2025-10-16: 3 commits2025-10-17: 0 commits2025-10-18: 4 commits2025-10-19: 3 commits2025-10-20: 1 commit2025-10-21: 1 commit2025-10-22: 1 commit2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 1 commit2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 2 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 1 commit2025-11-03: 1 commit2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 1 commit2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 1 commit2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 1 commit2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 1 commit2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 1 commit2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 2 commits2025-12-13: 3 commits2025-12-14: 2 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 1 commit2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 1 commit2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 1 commit2026-01-03: 2 commits2026-01-04: 9 commits2026-01-05: 8 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 1 commit2026-01-09: 1 commit2026-01-10: 1 commit2026-01-11: 1 commit2026-01-12: 4 commits2026-01-13: 3 commits2026-01-14: 5 commits2026-01-15: 16 commits2026-01-16: 2 commits2026-01-17: 1 commit2026-01-18: 1 commit2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 1 commit2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 1 commit2026-02-01: 3 commits2026-02-02: 0 commits2026-02-03: 1 commit2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 1 commit2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 1 commit2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 1 commit2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 1 commit2026-03-01: 1 commit2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 2 commits2026-03-07: 0 commits2026-03-08: 1 commit2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 1 commit2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 1 commit2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 3 commits2026-03-26: 1 commit2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 1 commit2026-03-30: 3 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 1 commit2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 1 commit2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 1 commit2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 1 commit2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 1 commit2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 1 commit2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 1 commit2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 1 commit2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 1 commit2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 1 commit2026-06-08: 1 commit2026-06-09: 1 commit2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 1 commit2026-06-15: 1 commit2026-06-16: 3 commits2026-06-17: 2 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 1 commit2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 8 commits2026-06-26: 1 commit2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 1 commit2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 6 commits2026-07-27: 78 commits2026-07-28: 31 commits2026-07-29: 58 commits2026-07-30: 18 commits2026-07-31: 11 commits2026-08-01: 16 commits2026-08-02: 6 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits
471 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Repeat trending

    3 trending appearances

What bitchat-android does

Bitchat-Android is a native mobile application that interfaces with the decentralized Bitchat mesh network over Bluetooth LE. It allows users to send end-to-end encrypted messages and join topic-based channels without relying on centralized servers or cellular data. The app implements the core peer-to-peer networking protocols natively in Kotlin, maintaining 100% binary compatibility with the iOS version to enable seamless cross-platform offline communication.

Privacy advocates, activists, and users in restricted or off-grid environments who require decentralized, unblockable mobile communication.

  • Decentralized Mesh Network: Uses Bluetooth LE for automatic peer discovery and multi-hop message relay without the internet.
  • End-to-End Encryption: Secures private messages locally using X25519 key exchange and AES-256-GCM encryption.
  • Cross-Platform Compatibility: Maintains full binary protocol compatibility with the iOS Bitchat client.
  • Store & Forward: Caches messages for offline peers and automatically delivers them upon reconnection.
  • Privacy First: Operates without accounts, phone numbers, or persistent identifiers.
  • Battery Optimization: Features adaptive scanning and power modes to conserve battery life based on device charge.

Where teams use it

Off-grid communication

Hikers and festival-goers use the app to stay in touch in areas with no cellular reception.

Censorship-resistant messaging

Activists communicate securely over the decentralized Bluetooth mesh in environments where internet access is restricted.

Cross-platform offline chats

Groups of Android and iOS users form a local mesh network to chat seamlessly during a power outage.

Anonymous networking

Privacy advocates join topic-based channels in public spaces without revealing personal identifiers.

Getting started: git clone https://github.com/permissionlesstech/bitchat-android.git && ./gradlew build

README

main branch
icon_128x128@2x

bitchat for Android

A decentralized peer-to-peer messaging app with dual transport architecture: local Bluetooth mesh networks for offline communication and internet-based Nostr protocol for global reach. No accounts, no phone numbers, no central servers.

This is the Android implementation of bitchat, fully protocol-compatible with the iOS version for cross-platform mesh communication.

bitchat.free

GitHub Releases

Get it on Google Play

See it in action

Offline mesh conversation Geohash globe picker
Active four-peer Bitchat mesh conversation with an image, voice messages, and text messages Bitchat geohash location picker showing the whole Earth and geohash grid

License

This project is released into the public domain. See the LICENSE file for details.

Features

  • Dual Transport Architecture: Bluetooth LE mesh for offline messaging, Nostr relays for internet-based messaging
  • Location-Based Channels: Geographic chat rooms using geohash coordinates over Nostr relays
  • Intelligent Message Routing: Automatically chooses the best transport, with queuing and retry when a peer is unreachable
  • End-to-End Encryption: Noise Protocol (XX pattern, X25519 + ChaCha20-Poly1305) for private messages over the mesh
  • Decentralized Mesh Network: Automatic peer discovery and multi-hop relay over Bluetooth LE (max 7 hops)
  • Wi-Fi Aware Transport: Higher-bandwidth local mesh on supported devices
  • Channel Chats: Topic-based group messaging with optional password protection (Argon2id + AES-256-GCM)
  • IRC-Style Commands: Familiar /join, /msg, /who style interface
  • Tor Support: Built-in Tor (Arti) for private internet connectivity
  • Emergency Wipe: Triple-tap to instantly clear all data
  • Cross-Platform: Binary protocol compatible with bitchat on iOS and macOS

Technical Architecture

Bluetooth Mesh Network (Offline)

  • Direct peer-to-peer within Bluetooth range, multi-hop relay through nearby devices
  • Noise Protocol sessions with forward secrecy; peer identities derived from static keys
  • Compact binary packet format with fragmentation, TTL routing, and deduplication
  • Adaptive duty cycling and connection limits for battery efficiency
  • Foreground service keeps the mesh alive within Android background execution limits

Nostr Protocol (Internet)

  • Global reach via public relays, geohash-based location channels
  • Private messages fall back to Nostr for mutual favorites when the mesh is unavailable
  • Ephemeral keys per geohash area

Android Stack

  • Kotlin, Jetpack Compose (Material 3), MVVM
  • Coroutines and Flow for all networking and state
  • Core components: MeshForegroundService (persistent connectivity), BluetoothMeshService / WifiAwareMeshService (transports), UnifiedMeshService (transport selection), NoiseSessionManager (encryption sessions), MessageRouter (mesh/Nostr routing with outbox retry)

Building

Requires Android Studio and the Android SDK (API 26+).

git clone https://github.com/permissionlesstech/bitchat-android.git
cd bitchat-android
./gradlew assembleDebug

Install on a connected device:

adb install -r app/build/outputs/apk/debug/app-debug.apk

The app requests Bluetooth, location (required for BLE scanning), and notification permissions at runtime.

Release APKs and the Android App Bundle can be rebuilt byte-for-byte in the pinned Linux container. Maintainers should follow the Android release guide. See Reproducible builds for the build trust model and public GitHub/Google Play verification procedures.

Testing

# Unit tests
./gradlew test

# Lint
./gradlew lint

# Instrumented tests (requires a device or emulator)
./gradlew connectedAndroidTest

Note that BLE mesh behavior is difficult to emulate; protocol and session logic is covered by unit tests, while radio-level behavior needs real devices.

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

35 total
  1. 1.7.41.7.4Jun 17, 202631K downloads

    ## What's Changed * Fix foreground service start eligibility by @callebtc in https://github.com/permissionlesstech/bitchat-android/pull/714 **Full Changelog**: https://github.com/permissionlesstech/bitchat-android/compare/1.7.3...1.7.4

  2. 1.7.31.7.3Jun 16, 20261.6K downloads

    ## What's Changed * Fix request sync duplicate public messages by @callebtc in https://github.com/permissionlesstech/bitchat-android/pull/707 * fix(sync): resolve hash alignment and early break bugs on GCS filter trimming by @a1denvalu3 in https://github.com/permissionlesstech/bitchat-android/pull/708 * Fix Android security parity from iOS audit by @callebtc in https://github.com/permissionlesstech/bitchat-android/pull/709 * Wifi aware refactor mesh core by @callebtc in https://github.com/permissionlesstech/bitchat-android/pull/711 * feat: disable Wi‑Fi Aware by default by @callebtc in https://github.com/permissionlesstech/bitchat-android/pull/712 **Full Changelog**: https://github.com/permissionlesstech/bitchat-android/compare/1.7.2...1.7.3

  3. 1.7.21.7.2Mar 30, 202619.9K downloads

    ## What's Changed * bump 1.7.1 by @callebtc in https://github.com/permissionlesstech/bitchat-android/pull/661 * chore: update license from MIT to GPLv3 by @callebtc in https://github.com/permissionlesstech/bitchat-android/pull/674 * Unit tests for BinaryProtocol by @rollforsats in https://github.com/permissionlesstech/bitchat-android/pull/678 * fix: use CSPRNG for heartbeat intervals by @a1denvalu3 in https://github.com/permissionlesstech/bitchat-android/pull/685 * Add 'Send private message' action to chat user sheet by @a1denvalu3 in https://github.com/permissionlesstech/bitchat-android/pull/649 * fix: add input validation for protocol decoding and fragment reassembly by @0x0v1 in https://github.com/permissionlesstech/bitchat-android/pull/666 * update version by @callebtc in https://github.com/permissionlesstech/bitchat-android/pull/688 ## New Contributors * @rollforsats made their first contribution in https://github.com/permissionlesstech/bitchat-android/pull/678 * @0x0v1 made their first contribution in https://github.com/permissionlesstech/bitchat-android/pull/666 **Full Changelog**: https://github.com/permissionlesstech/bitchat-android/compare/1.7.1...1.7.2

  4. APK release 1.7.11.7.1Feb 1, 202613.7K downloads

    ## What's Changed * Fix location updates in notes and Nostr subscription leaks by @callebtc in https://github.com/permissionlesstech/bitchat-android/pull/636 * fix(geohash): cleanup sampling subscriptions when closing location sheet by @a1denvalu3 in https://github.com/permissionlesstech/bitchat-android/pull/659 * fix: pause geohash heartbeat (kind 20001) sampling when backgrounded by @a1denvalu3 in https://github.com/permissionlesstech/bitchat-android/pull/660 **Full Changelog**: https://github.com/permissionlesstech/bitchat-android/compare/1.7.0...1.7.1

  5. APK release 1.7.01.7.0Jan 15, 202611.7K downloads

    - source routing: more efficient direct messages - geohash presence: count online people in region-city - update arti to 1.9.0 and add 32 bit builds - geocoder for de-googled phone via openstreetmap - fixes several issues identified by security audit firm cure53 - many ui improvements and fixes ## What's Changed * Implement Geohash Presence (Heartbeats) by @callebtc in https://github.com/permissionlesstech/bitchat-android/pull/576 * Gossip mesh topology + source-based routing by @callebtc in https://github.com/permissionlesstech/bitchat-android/pull/445 * Feat/graph force by @callebtc in https://github.com/permissionlesstech/bitchat-android/pull/581 * visual logger refactor by @callebtc in https://github.com/permissionlesstech/bitchat-android/pull/583 * Update arti to 1.9.0 and produce 32 bit builds by @callebtc in https://github.com/permissionlesstech/bitchat-android/pull/585 * Move PrivateChatSheet hosting into ChatDialogs and unify sheet state by @yet300 in https://github.com/permissionlesstech/bitchat-android/pull/586 * use bluetooth icon by @callebtc in https://github.com/permissionlesstech/bitchat-android/pull/597 * Fix/nostr dm bottom sheet by @callebtc in ht

Code frequency

additions and deletions
+93.9K-93.9KWeek of 2025-08-10: +11 linesWeek of 2025-08-10: -1 linesWeek of 2025-08-17: +12,235 linesWeek of 2025-08-17: -2,547 linesWeek of 2025-08-24: +4,467 linesWeek of 2025-08-24: -872 linesWeek of 2025-08-31: +3,879 linesWeek of 2025-08-31: -802 linesWeek of 2025-09-07: +2,474 linesWeek of 2025-09-07: -3,130 linesWeek of 2025-09-14: +7,886 linesWeek of 2025-09-14: -1,523 linesWeek of 2025-09-21: +245 linesWeek of 2025-09-21: -234 linesWeek of 2025-09-28: +242 linesWeek of 2025-09-28: -244 linesWeek of 2025-10-05: +245 linesWeek of 2025-10-05: -248 linesWeek of 2025-10-12: +12,536 linesWeek of 2025-10-12: -787 linesWeek of 2025-10-19: +360 linesWeek of 2025-10-19: -272 linesWeek of 2025-10-26: +295 linesWeek of 2025-10-26: -268 linesWeek of 2025-11-02: +259 linesWeek of 2025-11-02: -264 linesWeek of 2025-11-09: +257 linesWeek of 2025-11-09: -264 linesWeek of 2025-11-16: +259 linesWeek of 2025-11-16: -252 linesWeek of 2025-11-23: +246 linesWeek of 2025-11-23: -255 linesWeek of 2025-11-30: +247 linesWeek of 2025-11-30: -250 linesWeek of 2025-12-07: +5,009 linesWeek of 2025-12-07: -1,724 linesWeek of 2025-12-14: +257 linesWeek of 2025-12-14: -253 linesWeek of 2025-12-21: +249 linesWeek of 2025-12-21: -251 linesWeek of 2025-12-28: +2,099 linesWeek of 2025-12-28: -1,997 linesWeek of 2026-01-04: +4,876 linesWeek of 2026-01-04: -623 linesWeek of 2026-01-11: +6,089 linesWeek of 2026-01-11: -3,093 linesWeek of 2026-01-18: +272 linesWeek of 2026-01-18: -293 linesWeek of 2026-01-25: +252 linesWeek of 2026-01-25: -246 linesWeek of 2026-02-01: +293 linesWeek of 2026-02-01: -261 linesWeek of 2026-02-08: +253 linesWeek of 2026-02-08: -225 linesWeek of 2026-02-15: +283 linesWeek of 2026-02-15: -250 linesWeek of 2026-02-22: +947 linesWeek of 2026-02-22: -304 linesWeek of 2026-03-01: +1,450 linesWeek of 2026-03-01: -287 linesWeek of 2026-03-08: +268 linesWeek of 2026-03-08: -261 linesWeek of 2026-03-15: +259 linesWeek of 2026-03-15: -270 linesWeek of 2026-03-22: +566 linesWeek of 2026-03-22: -347 linesWeek of 2026-03-29: +313 linesWeek of 2026-03-29: -358 linesWeek of 2026-04-05: +300 linesWeek of 2026-04-05: -292 linesWeek of 2026-04-12: +272 linesWeek of 2026-04-12: -293 linesWeek of 2026-04-19: +277 linesWeek of 2026-04-19: -272 linesWeek of 2026-04-26: +267 linesWeek of 2026-04-26: -277 linesWeek of 2026-05-03: +263 linesWeek of 2026-05-03: -266 linesWeek of 2026-05-10: +258 linesWeek of 2026-05-10: -267 linesWeek of 2026-05-17: +263 linesWeek of 2026-05-17: -259 linesWeek of 2026-05-24: +280 linesWeek of 2026-05-24: -264 linesWeek of 2026-05-31: +367 linesWeek of 2026-05-31: -275 linesWeek of 2026-06-07: +598 linesWeek of 2026-06-07: -392 linesWeek of 2026-06-14: +6,535 linesWeek of 2026-06-14: -1,081 linesWeek of 2026-06-21: +812 linesWeek of 2026-06-21: -444 linesWeek of 2026-06-28: +0 linesWeek of 2026-06-28: -0 linesWeek of 2026-07-05: +0 linesWeek of 2026-07-05: -0 linesWeek of 2026-07-12: +509 linesWeek of 2026-07-12: -47 linesWeek of 2026-07-19: +0 linesWeek of 2026-07-19: -0 linesWeek of 2026-07-26: +93,852 linesWeek of 2026-07-26: -22,212 linesWeek of 2026-08-02: +566 linesWeek of 2026-08-02: -501 linesAug 10, 2025Aug 2, 2026
+175.3K lines added, -50.4K removed over the last year.

Commits per week

last 52 weeks
2180Week of 2025-08-10: 2 commitsWeek of 2025-08-17: 22 commitsWeek of 2025-08-24: 26 commitsWeek of 2025-08-31: 15 commitsWeek of 2025-09-07: 11 commitsWeek of 2025-09-14: 20 commitsWeek of 2025-09-21: 1 commitsWeek of 2025-09-28: 1 commitsWeek of 2025-10-05: 2 commitsWeek of 2025-10-12: 12 commitsWeek of 2025-10-19: 6 commitsWeek of 2025-10-26: 3 commitsWeek of 2025-11-02: 2 commitsWeek of 2025-11-09: 1 commitsWeek of 2025-11-16: 1 commitsWeek of 2025-11-23: 1 commitsWeek of 2025-11-30: 1 commitsWeek of 2025-12-07: 6 commitsWeek of 2025-12-14: 2 commitsWeek of 2025-12-21: 1 commitsWeek of 2025-12-28: 4 commitsWeek of 2026-01-04: 20 commitsWeek of 2026-01-11: 32 commitsWeek of 2026-01-18: 1 commitsWeek of 2026-01-25: 2 commitsWeek of 2026-02-01: 4 commitsWeek of 2026-02-08: 1 commitsWeek of 2026-02-15: 1 commitsWeek of 2026-02-22: 2 commitsWeek of 2026-03-01: 3 commitsWeek of 2026-03-08: 1 commitsWeek of 2026-03-15: 1 commitsWeek of 2026-03-22: 5 commitsWeek of 2026-03-29: 4 commitsWeek of 2026-04-05: 1 commitsWeek of 2026-04-12: 1 commitsWeek of 2026-04-19: 1 commitsWeek of 2026-04-26: 1 commitsWeek of 2026-05-03: 1 commitsWeek of 2026-05-10: 1 commitsWeek of 2026-05-17: 1 commitsWeek of 2026-05-24: 1 commitsWeek of 2026-05-31: 1 commitsWeek of 2026-06-07: 3 commitsWeek of 2026-06-14: 7 commitsWeek of 2026-06-21: 10 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 0 commitsWeek of 2026-07-12: 1 commitsWeek of 2026-07-19: 0 commitsWeek of 2026-07-26: 218 commitsWeek of 2026-08-02: 6 commitsAug 10, 2025Aug 2, 2026
471 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 2 commitsSun 1:00 — 2 commitsSun 2:00 — 2 commitsSun 3:00 — 4 commitsSun 4:00 — 2 commitsSun 5:00 — 4 commitsSun 6:00 — 39 commitsSun 7:00 — 6 commitsSun 8:00 — 1 commitsSun 9:00 — 1 commitsSun 10:00 — 1 commitsSun 11:00 — 2 commitsSun 12:00 — 4 commitsSun 13:00 — 5 commitsSun 14:00 — 3 commitsSun 15:00 — 0 commitsSun 16:00 — 2 commitsSun 17:00 — 4 commitsSun 18:00 — 2 commitsSun 19:00 — 1 commitsSun 20:00 — 3 commitsSun 21:00 — 7 commitsSun 22:00 — 6 commitsSun 23:00 — 3 commitsMon 0:00 — 5 commitsMon 1:00 — 2 commitsMon 2:00 — 6 commitsMon 3:00 — 9 commitsMon 4:00 — 2 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 2 commitsMon 9:00 — 2 commitsMon 10:00 — 8 commitsMon 11:00 — 5 commitsMon 12:00 — 8 commitsMon 13:00 — 9 commitsMon 14:00 — 3 commitsMon 15:00 — 9 commitsMon 16:00 — 4 commitsMon 17:00 — 6 commitsMon 18:00 — 10 commitsMon 19:00 — 2 commitsMon 20:00 — 2 commitsMon 21:00 — 5 commitsMon 22:00 — 11 commitsMon 23:00 — 6 commitsTue 0:00 — 1 commitsTue 1:00 — 0 commitsTue 2:00 — 2 commitsTue 3:00 — 1 commitsTue 4:00 — 1 commitsTue 5:00 — 1 commitsTue 6:00 — 0 commitsTue 7:00 — 1 commitsTue 8:00 — 0 commitsTue 9:00 — 0 commitsTue 10:00 — 0 commitsTue 11:00 — 1 commitsTue 12:00 — 1 commitsTue 13:00 — 4 commitsTue 14:00 — 4 commitsTue 15:00 — 4 commitsTue 16:00 — 8 commitsTue 17:00 — 3 commitsTue 18:00 — 5 commitsTue 19:00 — 4 commitsTue 20:00 — 3 commitsTue 21:00 — 5 commitsTue 22:00 — 9 commitsTue 23:00 — 5 commitsWed 0:00 — 7 commitsWed 1:00 — 8 commitsWed 2:00 — 9 commitsWed 3:00 — 5 commitsWed 4:00 — 1 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 1 commitsWed 9:00 — 0 commitsWed 10:00 — 0 commitsWed 11:00 — 1 commitsWed 12:00 — 8 commitsWed 13:00 — 7 commitsWed 14:00 — 7 commitsWed 15:00 — 8 commitsWed 16:00 — 0 commitsWed 17:00 — 2 commitsWed 18:00 — 6 commitsWed 19:00 — 9 commitsWed 20:00 — 4 commitsWed 21:00 — 5 commitsWed 22:00 — 5 commitsWed 23:00 — 8 commitsThu 0:00 — 16 commitsThu 1:00 — 0 commitsThu 2:00 — 2 commitsThu 3:00 — 3 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 3 commitsThu 7:00 — 2 commitsThu 8:00 — 2 commitsThu 9:00 — 0 commitsThu 10:00 — 2 commitsThu 11:00 — 3 commitsThu 12:00 — 8 commitsThu 13:00 — 6 commitsThu 14:00 — 10 commitsThu 15:00 — 8 commitsThu 16:00 — 8 commitsThu 17:00 — 6 commitsThu 18:00 — 1 commitsThu 19:00 — 4 commitsThu 20:00 — 2 commitsThu 21:00 — 2 commitsThu 22:00 — 3 commitsThu 23:00 — 8 commitsFri 0:00 — 6 commitsFri 1:00 — 6 commitsFri 2:00 — 3 commitsFri 3:00 — 2 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 3 commitsFri 7:00 — 0 commitsFri 8:00 — 1 commitsFri 9:00 — 0 commitsFri 10:00 — 0 commitsFri 11:00 — 1 commitsFri 12:00 — 1 commitsFri 13:00 — 2 commitsFri 14:00 — 2 commitsFri 15:00 — 3 commitsFri 16:00 — 4 commitsFri 17:00 — 5 commitsFri 18:00 — 5 commitsFri 19:00 — 5 commitsFri 20:00 — 4 commitsFri 21:00 — 3 commitsFri 22:00 — 7 commitsFri 23:00 — 4 commitsSat 0:00 — 6 commitsSat 1:00 — 3 commitsSat 2:00 — 7 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 2 commitsSat 10:00 — 3 commitsSat 11:00 — 2 commitsSat 12:00 — 4 commitsSat 13:00 — 4 commitsSat 14:00 — 5 commitsSat 15:00 — 6 commitsSat 16:00 — 7 commitsSat 17:00 — 9 commitsSat 18:00 — 4 commitsSat 19:00 — 1 commitsSat 20:00 — 4 commitsSat 21:00 — 3 commitsSat 22:00 — 0 commitsSat 23:00 — 7 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Aug 4, 2026weekly#15+928
Aug 3, 2026weekly#15+928
Jul 27, 2026daily#13+260
  • bannedbook/fanqiang

    翻墙-科学上网

    49.6K stars · Kotlin

  • google-ai-edge/gallery

    A gallery that showcases on-device ML/GenAI use cases and allows people to try and use models locally.

    24.4K stars · Kotlin

  • iamgio/quarkdown

    🪐 Markdown with superpowers: from ideas to papers, presentations, websites, books, and knowledge bases.

    15.9K stars · Kotlin

  • capcom6/android-sms-gateway

    The SMS Gateway for Android™ app enables sending and receiving SMS messages through an API that can be accessed directly on the device or via a cloud server when direct device access is not possible.

    5.3K stars · Kotlin

  • embabel/embabel-agent

    Agent framework for the JVM. Pronounced Em-BAY-bel /ɛmˈbeɪbəl/

    4K stars · Kotlin

  • samyak2403/RepoStore

    Explore apps published on GitHub, view release details, and install APKs instantly — all in one place. Developed using pure Kotlin, optimized for modern Android devices.

    1.2K stars · Kotlin