Skip to content

boxlabss/HexDroid

Repository files navigation

HexDroid

License: GPL v3 Android Kotlin GitHub release GitHub stars Build RB Status

A fast, modern IRC client for Android.

Google Play  ·  IzzyOnDroid  ·  Direct Download  ·  Documentation


HexDroid is a free and open source IRC client for Android. It provides a clean, modern interface while supporting the features users expect from a desktop client — including IRCv3 capabilities, SASL authentication, TLS encryption, bouncer support, DCC file transfers, and an array of commands.

Requirements: Android 8.0 (API 26) or higher  ·  License: GPLv3


Features

  • Multi-network — connect to multiple servers simultaneously, each with independent nick, SASL, TLS, autojoin, and encoding settings
  • IRCv3 — 40+ capabilities including chathistory, away-notify, server-time, echo-message, draft/typing, MONITOR, bouncer-specific caps, and more
  • Security — TOFU certificate pinning, SASL (PLAIN / SCRAM-SHA-256 / EXTERNAL), client certificates, Android Keystore credential storage
  • Localisation — Arabic, Chinese, Dutch, French, German, Italian, Japanese, Korean, Polish, Portuguese, Russian, Spanish, Turkish

User Interface

  • Material Design 3 with light, dark, and Matrix (green-on-black) themes
  • Adjustable font family (Open Sans, Inter, Monospace, custom TTF/OTF) and size, separately for UI and chat
  • mIRC colour rendering with 99-colour picker + ANSI colour rendering
  • Nick @ autocomplete and /command completion with inline hint chips
  • Channel op panel: topic, key, user limit; ban/quiet/except/invex list management
  • IRCop tools panel (visible when umode +o): K/G/D/Z-line, Shun, Kill, SAJoin/SAPart, WALLOPS/GLOBOPS/LOCOPS, MOTD, Links, Uptime
  • Per-network ignore list (case-insensitive; covers chat, notices, and DCC offers)
  • Channel list with live search and typing indicators displayed per-buffer
  • Lag indicator, swipe gestures, compact mode, intro tour for new users
  • Backup/restore: network profiles and settings exported as JSON

IRCv3

HexDroid negotiates a comprehensive set of capabilities. All are enabled by default unless noted.

Core message infrastructure
Cap Notes
message-tags Base for all tag-based features
server-time Timestamps on every message, including history replay
echo-message + labeled-response Outbound message confirmation; deduplication via msgid
batch chathistory, event-playback, and labeled-response grouping
message-ids Unique msgid per message; prevents duplicates during chathistory overlap
standard-replies Structured FAIL/WARN/NOTE from Ergo, soju, InspIRCd
utf8only Signals UTF-8 intent to server
History & read state
Cap Notes
chathistory / draft/chathistory Replay on join; BEFORE paging on scroll-to-top; LATEST for unread catch-up
draft/event-playback JOIN/PART/MODE events included in history batches
draft/read-marker / soju.im/read Read pointer sync; drives the unread separator line
Membership & presence
Cap Notes
away-notify * nick is now away / * nick is back in every shared channel; initial away state seeded from WHOX flags on join
account-notify Services login/logout notifications
extended-join JOIN line shows [logged in as account] for authenticated users
chghost Live ident/hostname changes reflected in nicklist
setname Receive realname changes; send your own with /setname
multi-prefix Full mode prefix stack in NAMES (e.g. @+nick)
invite-notify Notifies all channel members of /invite
monitor / draft/extended-monitor Nick watch list; MONONLINE/MONOFFLINE notifications
WHOX (005 ISUPPORT) WHO %uhsnfar on join seeds ident, host, account, and initial away state
Messaging
Cap Notes
account-tag Sender account exposed on every PRIVMSG/NOTICE
draft/typing Composing indicators; sending opt-in (off by default), receiving opt-out
draft/message-reactions Emoji reactions via TAGMSG +draft/react; displayed as status lines
+draft/reply Reply-to msgid threading; forwarded on PRIVMSG and RELAYMSG
draft/relaymsg Relay bot messages attributed to the relayed nick (off by default)
Channel management & bouncer / vendor caps
Cap Notes
draft/channel-rename Buffer keys, nicklists, and selected buffer all updated on server-issued RENAME
soju.im/bouncer-networks + soju.im/bouncer-networks-notify Multi-upstream support via soju
soju.im/read soju read-marker protocol (parallel to draft/read-marker)
soju.im/no-implicit-names / draft/no-implicit-names Suppress auto-NAMES on JOIN (avoids flood on reconnect)
znc.in/server-time-iso Legacy ZNC < 1.7 timestamps
znc.in/playback ZNC *playback module for missed-message replay

Character Encoding

Automatic detection starting from UTF-8, with fallback to windows-1251, KOI8-R, ISO-8859-1/15, GB2312, Big5, Shift_JIS, EUC-JP, EUC-KR, and more. Manual override per network for legacy servers.

DCC

  • DCC SEND and DCC CHAT with active, passive, and auto modes
  • Configurable incoming port range and download folder
  • Rich transfer progress cards with one-tap accept from notification
  • Incoming DCC CHAT offers create a buffer immediately and deep-link from notification

Installation

Google Play

Get it on Google Play

IzzyOnDroid

Get it at IzzyOnDroid

Direct APK

hexdroid-latest.apk

Build from source:

git clone https://github.com/boxlabss/hexdroid.git
cd hexdroid
./gradlew assembleRelease

Quick Start

  1. Tap Networks → + and enter a server hostname and port (6697 for TLS)
  2. Set your nickname; optionally configure SASL credentials
  3. Save and tap Connect
  4. Use /join #channel or tap Channel list to browse

Full documentation at hexdroid.boxlabs.uk.


Privacy

No ads, analytics, crash reporters, or third-party SDKs. The app communicates only with the IRC servers you configure. All data is stored locally and deleted with the app.


Support

Where Link
Docs hexdroid.boxlabs.uk
Email android@boxlabs.co.uk
IRC #HexDroid on irc.afternet.org

Contributing

Open an issue before submitting a pull request for non-trivial changes. Bug reports should include:

  • Device model and Android version
  • HexDroid version
  • Steps to reproduce
  • Relevant logcat output