Skip to content

TekkadanPlays/mycelium-android

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

181 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mycelium

A native Android Nostr client built with Jetpack Compose and Material Design 3. Mycelium connects to relays via WebSocket and delivers decentralized social content through user-controlled relay configurations.

Table of Contents

Install

GitHub Releases

Download the latest APK from GitHub Releases.

Obtainium

Auto-update via Obtainium using the repo URL:

https://github.com/TekkadanPlays/mycelium-android

Or the update manifest:

https://raw.githubusercontent.com/TekkadanPlays/mycelium-android/main/obtanium.json

Zapstore

Zapstore availability is planned for a future release.

F-Droid

F-Droid packaging is planned for a future release.

Features

Feed and Content

  • Home feed with global and following filters, infinite scroll, and repost deduplication
  • Forum-style topics with threaded reply chains
  • Thread overlay stacks for chained exploration without losing scroll position
  • Long-form article rendering with markdown support
  • Live activity discovery and HLS playback with picture-in-picture

Relay Management

  • Profile-based relay organization with per-relay health tracking and auto-blocking
  • Slot utilization dashboard and relay discovery
  • Three background connection modes: Always On, Adaptive, and When Active

Messaging and Payments

  • Encrypted direct messages with conversation list
  • Lightning zaps via Wallet Connect or external wallet
  • Embedded self-custodial Lightning wallet with encrypted seed storage and NWC service

Publishing

  • Relay selection for all compose flows with inbox/outbox awareness
  • Auto-save drafts, note scheduling, and offline retry queue
  • Blossom media upload with auth events
  • Automatic URL tracking parameter sanitization and EXIF metadata stripping
  • Live markdown syntax highlighting and decorative Unicode text styles

Profiles and Accounts

  • Tabbed Notes/Replies/Media views with collapsible profile header
  • Multi-account support with Amber (external signer) and nsec login

Notifications

  • 10-tab filtered view with Android push notifications across 8 channels
  • Background DM relay checks alongside standard inbox polling

NIP Support

Mycelium implements the following Nostr Implementation Possibilities:

NIP Name Usage in Mycelium
NIP-01 Basic Protocol Event model, relay communication, subscription filters
NIP-02 Follow List Kind-3 contact lists for Following feed filter
NIP-04 Encrypted DM (v1) Legacy DM decryption (superseded by NIP-17)
NIP-05 DNS Identifiers NIP-05 verification badge on profiles
NIP-10 Reply Threading e/E tag parsing for root/reply chain resolution
NIP-11 Relay Info Relay metadata display, icon, payment/auth detection
NIP-17 Private DMs Gift-wrapped encrypted DMs with dedicated DM relay routing
NIP-19 Bech32 Entities npub/nsec/note/nevent/nprofile encoding and inline rendering
NIP-22 Comments Kind-11 topics and kind-1111 threaded comments
NIP-23 Long-Form Content Kind-30023 article rendering with markdown
NIP-25 Reactions Kind-7 reactions with custom emoji support
NIP-30 Custom Emoji Emoji pack rendering in reactions and note content
NIP-33 Parameterized Replaceable Addressable events for relay sets, settings, articles
NIP-42 Relay Authentication AUTH challenge-response for restricted relays
NIP-44 Encrypted Payloads (v2) Modern encryption for NIP-17 gift wraps
NIP-47 Wallet Connect NWC for zap payments and embedded wallet NWC service
NIP-53 Live Activities Live stream discovery and HLS playback
NIP-55 Android Signer Amber external signer integration for key management
NIP-57 Zaps Lightning zap requests and receipt display
NIP-58 Badges Badge display on profiles
NIP-65 Relay Lists Kind-10002 inbox/outbox relay discovery and outbox feed routing
NIP-66 Relay Discovery Relay monitor data for onboarding and relay discovery
NIP-78 App-Specific Data Kind-30078 synced settings across clients
NIP-86 Relay Management Relay management API support
NIP-88 Polls Poll creation, voting, and result display
NIP-89 Recommended Apps Client tag for app discovery
NIP-92 Media Attachments imeta tag parsing for inline media metadata
NIP-96 File Storage Blossom media upload with BUD-01/02/04

Architecture

Single-activity MVVM with Jetpack Navigation Compose.

Module Package Role
app/ social.mycelium.android Android application — UI, ViewModels, repositories, services, Room DB
cybin/ com.example.cybin Nostr protocol library — events, crypto, NIP implementations, relay transport

Cybin is included via Gradle composite build (includeBuild) — changes reflect immediately.

See docs/ for detailed architecture, relay system, navigation, and data model documentation.

Build from Source

Requirements: JDK 11+, Android SDK (compileSdk 36, minSdk 35)

git clone https://github.com/TekkadanPlays/mycelium-android.git
cd mycelium-android
./gradlew assembleRelease
adb install app/build/outputs/apk/release/app-release.apk

Dependencies

Library Version Purpose
Kotlin 2.2.0 Language
Ktor 3.4.1 HTTP + WebSocket (CIO engine)
Compose BOM 2024.12.01 UI framework
Coil 2.5.0 Image loading
Media3 1.3.1 Video/livestream playback
secp256k1-kmp 0.22.0 Nostr cryptography
lightning-kmp 1.11.5-SNAPSHOT Embedded Lightning node
Kotlinx Serialization 1.7.3 JSON parsing
Room 2.7.1 Local database

Contributing

See CONTRIBUTING.md for guidelines. For AI agents, see AGENTS.md and CLAUDE.md.

Credits

License

MIT — see LICENSE.md. Lightning wallet components from ACINQ are Apache 2.0 (included in LICENSE.md).

About

Kotlin Native client for Nostr

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors