permissionlesstech/bitchat-androidPublic

decentralized mesh chat

AI summary: An experimental Android chat application using Nostr over local Bluetooth mesh networks.

Stars
7.7K
+6 today
Forks
1.8K
Watchers
95
Open issues
220
Open PRs
119
Contributors
~59
Commits
866
Branches
124

KotlinGPL-3.0Created Jul 8, 2025Last push 7d agoLatest release v2.0.1+15 stars this week+65 this month

Quick answers

What is bitchat-android?
An experimental Android chat application using Nostr over local Bluetooth mesh networks.
What does bitchat-android do?
Bitchat-Android is a decentralized, offline-first messaging client for Android devices that enables communication without relying on traditional internet infrastructure or cellular networks. It utilizes the Nostr protocol for standardized message formatting and cryptographic identity management, but crucially, it routes these messages over local Bluetooth mesh networks instead of centralized relays. This allows users in close physical proximity to establish peer-to-peer chat networks ad-hoc. The application is designed to be highly resilient, providing a secure, permissionless communication channel in scenarios where standard connectivity is unavailable, monitored, or actively blocked.
Who is bitchat-android for?
Privacy advocates, activists, and developers interested in resilient, offline-first communication using Nostr and local mesh networking.
How do I get started with bitchat-android?
Clone the repository and build the APK using Android Studio.
How popular is bitchat-android on GitHub?
permissionlesstech/bitchat-android has 7,668 stars and 1,840 forks on GitHub, and gained 15 stars in the last 7 days.
What license does bitchat-android use?
permissionlesstech/bitchat-android is released under the GPL-3.0 license.

Star history

since Jul 27, 2026
02K4K6KJul 2026Aug 2026Sep 2026Oct 2026
7.7K stars as of Oct 3, 2026. Measured daily since Jul 27, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
SepOctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-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: 8 commits2026-07-27: 78 commits2026-07-28: 33 commits2026-07-29: 66 commits2026-07-30: 20 commits2026-07-31: 16 commits2026-08-01: 18 commits2026-08-02: 7 commits2026-08-03: 2 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits2026-08-09: 5 commits2026-08-10: 1 commit2026-08-11: 10 commits2026-08-12: 1 commit2026-08-13: 1 commit2026-08-14: 0 commits2026-08-15: 2 commits2026-08-16: 1 commit2026-08-17: 2 commits2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 0 commits2026-08-21: 0 commits2026-08-22: 0 commits2026-08-23: 1 commit2026-08-24: 10 commits2026-08-25: 1 commit2026-08-26: 4 commits2026-08-27: 0 commits2026-08-28: 0 commits2026-08-29: 0 commits2026-08-30: 2 commits2026-08-31: 0 commits2026-09-01: 0 commits2026-09-02: 0 commits2026-09-03: 0 commits2026-09-04: 0 commits2026-09-05: 1 commit2026-09-06: 1 commit2026-09-07: 3 commits2026-09-08: 0 commits2026-09-09: 0 commits2026-09-10: 0 commits2026-09-11: 0 commits2026-09-12: 0 commits2026-09-13: 1 commit2026-09-14: 0 commits2026-09-15: 0 commits2026-09-16: 0 commits2026-09-17: 0 commits2026-09-18: 0 commits2026-09-19: 0 commits2026-09-20: 1 commit2026-09-21: 0 commits2026-09-22: 0 commits2026-09-23: 0 commits2026-09-24: 0 commits2026-09-25: 0 commits2026-09-26: 0 commits
446 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Continuous integration

    Automated checks passing

  • Repeat trending

    3 trending appearances

What bitchat-android does

Bitchat-Android is a decentralized, offline-first messaging client for Android devices that enables communication without relying on traditional internet infrastructure or cellular networks. It utilizes the Nostr protocol for standardized message formatting and cryptographic identity management, but crucially, it routes these messages over local Bluetooth mesh networks instead of centralized relays. This allows users in close physical proximity to establish peer-to-peer chat networks ad-hoc. The application is designed to be highly resilient, providing a secure, permissionless communication channel in scenarios where standard connectivity is unavailable, monitored, or actively blocked.

Privacy advocates, activists, and developers interested in resilient, offline-first communication using Nostr and local mesh networking.

  • Bluetooth mesh routing: Leverages local device-to-device Bluetooth connections to relay messages without cellular data or Wi-Fi.
  • Nostr protocol integration: Uses the standardized Nostr protocol for cryptographic user identity (public/private keys) and message signing.
  • Offline-first architecture: Designed from the ground up to function entirely offline, storing and forwarding messages as peers come into range.
  • Permissionless communication: Eliminates the need for centralized servers or phone numbers, preventing censorship or account bans.
  • Cryptographic security: Ensures all messages are signed and verifiable using the underlying Nostr public key infrastructure.

Where teams use it

Disaster Recovery Communication

Emergency responders and citizens use the app to coordinate and share information locally during natural disasters when cellular towers are disabled.

Protest Coordination

Activists utilize the Bluetooth mesh capabilities to communicate securely in dense crowds even when local internet access is shut down or heavily monitored.

Off-Grid Networking

Hikers or festival-goers establish local ad-hoc networks to chat with their groups in remote areas devoid of traditional network coverage.

Censorship Evasion

Users in highly restrictive regimes bypass national firewalls by passing messages device-to-device entirely outside of the monitored internet infrastructure.

Getting started: Clone the repository and build the APK using Android Studio.

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

36 total
  1. Bitchat Android 2.0.1v2.0.1Aug 11, 202613.8K downloads

    ## Bitchat Android 2.0.1 ### Highlights - **Bitchat for Wear OS:** join the nearby mesh from your watch, use public chat and encrypted direct messages, browse People, manage favorites and verification, receive notifications, record voice notes, and receive images and files. - **New chat styles:** choose the classic Matrix layout or peer-colored message bubbles, including bubble-aware media, timestamps, and delivery indicators. - **Live push-to-talk:** stream voice in public channels and encrypted direct messages on Android and Wear OS, with improved recording feedback, waveforms, haptics, and slide-to-cancel controls. - **Cashu support:** recognize and preview Cashu eCash tokens, use `/pay`, and redeem with a compatible external wallet or web flow. Cashu tokens are bearer instruments; anyone who obtains a token may be able to redeem it. - **Persistent private conversations:** keep conversation history, unread state, aliases, favorites, and previews across restarts, with clearer controls for deleting conversations. - **Offline geohash globe:** explore geohash channels with a native animated 3D globe, country borders, cities, polar coverage, and adjustable render quality.

  2. 1.7.41.7.4Jun 17, 202633.3K 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

  3. 1.7.31.7.3Jun 16, 20261.7K 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

  4. 1.7.21.7.2Mar 30, 202620K 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

  5. 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

Code frequency

additions and deletions
+96.8K-96.8KWeek 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: +96,753 linesWeek of 2026-07-26: -23,901 linesWeek of 2026-08-02: +1,756 linesWeek of 2026-08-02: -978 linesWeek of 2026-08-09: +1,519 linesWeek of 2026-08-09: -751 linesWeek of 2026-08-16: +393 linesWeek of 2026-08-16: -384 linesWeek of 2026-08-23: +1,136 linesWeek of 2026-08-23: -663 linesWeek of 2026-08-30: +913 linesWeek of 2026-08-30: -720 linesWeek of 2026-09-06: +588 linesWeek of 2026-09-06: -568 linesWeek of 2026-09-13: +355 linesWeek of 2026-09-13: -342 linesWeek of 2026-09-20: +341 linesWeek of 2026-09-20: -358 linesSep 28, 2025Sep 20, 2026
+153.4K lines added, -47.2K removed over the last year.

Commits per week

last 52 weeks
2390Week 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: 239 commitsWeek of 2026-08-02: 9 commitsWeek of 2026-08-09: 20 commitsWeek of 2026-08-16: 3 commitsWeek of 2026-08-23: 16 commitsWeek of 2026-08-30: 3 commitsWeek of 2026-09-06: 4 commitsWeek of 2026-09-13: 1 commitsWeek of 2026-09-20: 1 commitsSep 28, 2025Sep 20, 2026
446 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 — 46 commitsSun 7:00 — 6 commitsSun 8:00 — 1 commitsSun 9:00 — 4 commitsSun 10:00 — 1 commitsSun 11:00 — 2 commitsSun 12:00 — 4 commitsSun 13:00 — 5 commitsSun 14:00 — 7 commitsSun 15:00 — 2 commitsSun 16:00 — 2 commitsSun 17:00 — 5 commitsSun 18:00 — 2 commitsSun 19:00 — 1 commitsSun 20:00 — 3 commitsSun 21:00 — 7 commitsSun 22:00 — 6 commitsSun 23:00 — 4 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 — 5 commitsMon 15:00 — 9 commitsMon 16:00 — 4 commitsMon 17:00 — 6 commitsMon 18:00 — 11 commitsMon 19:00 — 6 commitsMon 20:00 — 10 commitsMon 21:00 — 7 commitsMon 22:00 — 11 commitsMon 23:00 — 7 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 — 2 commitsTue 8:00 — 0 commitsTue 9:00 — 1 commitsTue 10:00 — 0 commitsTue 11:00 — 1 commitsTue 12:00 — 2 commitsTue 13:00 — 4 commitsTue 14:00 — 5 commitsTue 15:00 — 6 commitsTue 16:00 — 8 commitsTue 17:00 — 4 commitsTue 18:00 — 5 commitsTue 19:00 — 5 commitsTue 20:00 — 7 commitsTue 21:00 — 5 commitsTue 22:00 — 10 commitsTue 23:00 — 5 commitsWed 0:00 — 7 commitsWed 1:00 — 9 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 — 3 commitsWed 12:00 — 8 commitsWed 13:00 — 7 commitsWed 14:00 — 8 commitsWed 15:00 — 13 commitsWed 16:00 — 3 commitsWed 17:00 — 3 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 — 9 commitsThu 16:00 — 8 commitsThu 17:00 — 6 commitsThu 18:00 — 1 commitsThu 19:00 — 6 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 — 5 commitsFri 3:00 — 3 commitsFri 4:00 — 1 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 — 2 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 — 6 commitsSat 14:00 — 5 commitsSat 15:00 — 7 commitsSat 16:00 — 8 commitsSat 17:00 — 9 commitsSat 18:00 — 4 commitsSat 19:00 — 2 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

    翻墙-科学上网

    53.8K 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.8K stars · Kotlin

  • iamgio/quarkdown

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

    16.2K 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.8K stars · Kotlin

  • embabel/embabel-agent

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

    4.5K stars · Kotlin

  • mahlernim/google-timeline-visualizer

    Visualize your year in travel using your Google Location History (Timeline) data

    3K stars · Kotlin