Skip to content

Repository files navigation

motd

A native Android IRC client with a Telegram-style chat UI.

Latest release F-Droid version GitHub downloads CI status License: GPL-3.0-or-later #motd on Libera.Chat

motd is built in Kotlin with Jetpack Compose and Material 3. It speaks IRCv3 and works best paired with a soju bouncer — capabilities are detected over CAP and enabled automatically — but it connects fine to plain networks too, falling back to local-only history and a persistent socket.

Screenshots

Each frame is split diagonally between the Ayu Light and Ayu Dark themes. See them in motion on the landing page.

Chat list Conversation File uploader
motd chat list, Ayu Light / Ayu Dark diagonal split motd conversation, Ayu Light / Ayu Dark diagonal split motd attachment chooser, Ayu Light / Ayu Dark diagonal split

Features

  • Telegram-style chat — unified chat list, grouped bubbles, day separators, event pills, inline images, and link previews
  • Infinite scrollbackdraft/chathistory paging through a bouncer, local-only history on plain networks
  • Cross-device read statedraft/read-marker sync
  • Multi-network — several networks over one bouncer connection (soju.im/bouncer-networks)
  • Push or persistent socket — UnifiedPush + soju.im/webpush with on-device decryption, or a foreground service
  • Modern composer — nick autocomplete, replies, reactions, typing indicators, and slash commands
  • Full-text search — across all history or one buffer, with jump-to-message
  • Theming — Material You dynamic color plus curated editor/terminal palettes (Ayu, Gruvbox, Catppuccin, Modus, and more)
  • Hardened transport — TLS with SASL PLAIN/EXTERNAL, client certificates, IRCv3 STS pinning, and optional SOCKS5/Tor/VLESS obfuscation

Install

Get it on F-Droid

Both share the same signing key, so either install updates from the other. Requires Android 8.0+ on a 64-bit ARM device (the embedded obfuscation transport is arm64-v8a-only). Push delivery is UnifiedPush — see the ntfy setup guide.

Connecting

Direct: add a network with host irc.libera.chat, port 6697, TLS on, and SASL PLAIN with your NickServ credentials (or SASL NONE).

Through a bouncer: point the network at your soju bouncer and authenticate with your bouncer account; motd negotiates capabilities and manages your upstream networks from a single connection. For CLoak, follow the CLoak guide.

For SOCKS5, Tor, or VLESS + REALITY, see the obfuscation guide.

Development

The Nix flake pins the toolchain (JDK 21 + Android SDK); run everything under nix develop. Quick start:

git submodule update --init --recursive
nix develop -c ./gradlew :app:assembleDebug

Community

Questions, bug reports, and feedback: join #motd on Libera.Chat, or open an issue.

License

Copyright 2026 Trevor Arjeski. Licensed under the GNU GPL v3.0 or later. Third-party licensing is recorded in THIRD_PARTY_NOTICES.md.

This project has been developed with assistance from large language models; contributions are reviewed, tested, and maintained by the project maintainer, who remains responsible for the published code and releases.

About

Modern native Android IRCv3 client

Topics

Resources

Stars

20 stars

Watchers

2 watching

Forks

Releases

Contributors

Languages