Adium is an open source and free instant messaging application for macOS that can connect to XMPP (Jabber), IRC and more.
Objective-C
7
1,093 commits
updated Sep 22, 2026
This is a fork of the original Adium (source) that revives and modernizes it for current macOS. It began as an Apple Silicon (arm64) port, as the original is an Intel-only binary from 2021. Since then much has changed: WhatsApp, Telegram, Signal and Microsoft Teams arrived next to the classic services that stood the test of time, encrypted voice and video calls over XMPP, full Dark Mode, replies straight from Notification Center banners, a rebuilt System Settings-style preferences window, a WKWebView message view, and a long list of fixes for how modern macOS behaves.
Adium was created and developed by the Adium team. All credit for the application itself belongs to the original developers; see Copyright.txt. This fork is not affiliated with or endorsed by them. It is maintained by a long-time Adium user who simply wants to keep a beloved app alive after many years of use. The upstream project has been inactive since 2021.
Current version: 1.8.0.
Still supported classic services: XMPP/Jabber, IRC, Gadu-Gadu, Novell GroupWise and SIMPLE, plus OTR and OMEMO encryption and tabbed chats in a modern look.
Conversations, Gajim, Dino and Monal encrypt with OMEMO, most of them by default, and until now a message from any of them arrived as the apology its sender attached for clients that cannot read one. Adium reads them now, and writes them.
Encrypted one to one conversations (XEP-0384, the widely spoken namespace rather than the newer one)
A padlock that closes only when the message really is encrypted, not when it has merely been asked for
Every device the other person has, shown in the encryption menu with its fingerprint, each one to be accepted or turned down; ours is at the top to be read out
Rather fail than fall back: a message that cannot be encrypted waits, and then says so, instead of going out in the clear
Says what it used so a client that cannot read the message can explain why (XEP-0380)
Pictures and voice notes are encrypted too (XEP-0454): what goes up to the file server is bytes nobody there can read, and what arrives is played or shown rather than left as an address
Group chats are not encrypted yet.
Adium can place and take calls again, encrypted the way modern clients insist on. The signalling is Adium's own, written against the XEPs; the media runs through Google's WebRTC natively.
.AdiumPlugin bundle carrying one JavaScript
file that changes how messages are displayed. It works in every
message style, needs no compiled code, and therefore never worries
about processor architecturesOther/XtrasCreator): it authors
emoticon sets, sound sets, status/service/menu-bar/group-chat icon
packs, dock icons, message styles, contact list themes and layouts,
and script packs, and writes the description Adium shows on an
xtra's pageAdium's development did not stop at the last state of adium/adium: the Mercurial mainline and community branches continued toward an Adium 1.6/1.7 that was never released, preserved today in forks such as shtrom/adium.
This is a work in progress; expect rough edges.
For Intel Macs and older systems, use the original Adium 1.5.10.4.
git clone --recursive https://github.com/KnutMann/adium.git
cd adium
./bootstrap.sh
The app lands in build/Release/Adium.app (ad-hoc signed, so it runs
on the machine that built it; distributing binaries to others would
require a proper signing identity). bootstrap.sh builds the
AIUtilities and MMTabBarView subprojects first and stages their
products, then builds the main project.
One command from a fresh checkout to an installed application:
./install.sh
Everything beyond Xcode is checked into the repository as prebuilt arm64
binaries. The script verifies the bundled protocol plug-ins (including a
functional probe that asks libpurple itself whether every plug-in's protocol
registers - the failure mode it guards against is silent), builds the app,
verifies the result and installs it to /Applications. --build-only skips the
install, --debug builds the Debug configuration. The same verification runs
as a phase of every Xcode build.
The XtrasCreator companion app (see Tools above) builds
separately:
xcodebuild -project Other/XtrasCreator/XtrasCreator.xcodeproj build.
Three things are fetched rather than vendored, and both bootstrap.sh
and install.sh get them by running Dependencies/fetch.sh before they
build anything. It is idempotent and takes about a second once
everything is in place, so there is no reason to skip it:
git submodule update --init --recursive)Without them the build fails at a compiler error naming a header, which says nothing about a download being what was missing.
All other required libraries (libpurple, glib, libotr, libgcrypt, ...)
are vendored as prebuilt arm64 frameworks in the repository. Rebuilding
them from source is only necessary when upgrading a dependency or
patching one; see Dependencies/build.sh (this does require a
Homebrew toolchain).
The source in this repository is GNU GPL v2 or later, see License.txt. Original code copyright the Adium team and contributors (Copyright.txt).
The application you build from it is not GPL v2, and it is worth being plain about why. Several of the bundled plug-ins carry stronger terms, and since every source file here says "or later", combining them is permitted; what it costs is the GPL v2 option for the finished binary, not the licence of the sources.
libsignal-presage.so is GPL v3 itself, and the Rust it links in
statically (presage, presage-store-sqlite and
libsignal-service-rs) declares AGPL-3.0-only in its own
Cargo.toml. The Affero terms therefore reach the shipped binary.libwhatsmeow.so, libteams.so and libteams-personal.so are
GPL v3.libtelegram-tdlib.so links the bundled OpenSSL 3, whose Apache 2.0
terms do not combine with GPL v2 at all. The same OpenSSL is now used
by AdiumLibpurple itself, for the cryptography behind OMEMO, so this
one is no longer confined to a plug-in.The texts those terms require to travel with the work are in Licenses/: GPL-3.0.txt and AGPL-3.0.txt.
Leaving out the plug-ins, which the scripts allow, drops the GPL v3 and AGPL terms but not the OpenSSL one, so such a build is GPL v3 or later rather than v2. The sources themselves stay GPL v2 or later, and it is only the combination that moves.
This repository ships some components as prebuilt arm64 binaries. The
corresponding sources are publicly available at the exact revisions
listed here (the Dependencies/patches/ directories document every
local change on top of them):
| Binary | Project | Revision | License |
|---|---|---|---|
PurplePlugins/libwhatsmeow.so | purple-gowhatsapp | c58fcbac9aa7210ce08cf12ef3442932730ec312 | GPL v3 |
PurplePlugins/libtelegram-tdlib.so | tdlib-purple 2.1.0 | b277ac1941dbed946444454f67b89265541237b7 | GPL v2 |
(statically inside libtelegram-tdlib.so) | TDLib 1.8.65 | a8f21f5230172634becc1739050ef23ecd6ea291 | Boost 1.0 |
PurplePlugins/libsignal-presage.so | purple-presage | c4c9b8d8e1a822f973520e8870aba1d2347b18c6 (nightly-20260810) | GPL v3, with AGPL v3 parts statically linked in (see below) |
PurplePlugins/libteams.so, libteams-personal.so | purple-teams | 62f6fff | GPL v3 |
PurplePlugins/libircv3.so | purple2-ircv3 | 0e73297 | GPL v2 |
Frameworks/libssl.3.dylib, libcrypto.3.dylib | OpenSSL 3, used by TDLib inside the Telegram plugin | Homebrew build | Apache 2.0 |
Frameworks/libwebp.7.dylib, libsharpyuv.0.dylib | libwebp | Homebrew build | BSD 3-Clause |
Frameworks/libpng16.16.dylib | libpng | Homebrew build | libpng/zlib |
Frameworks/libotr.framework and friends | libotr, libgcrypt, libgpg-error, gettext | Homebrew builds | GPL v2 / LGPL v2.1 |
libpurple, glib and the other core dependencies are not shipped as
binaries; they are built from source by the scripts in Dependencies/
(which pin the exact versions, e.g. libpurple 2.14.14). The LGPL
components are dynamically linked, so they can be swapped out by
rebuilding the bundle.
Objective-C
56.6%
C
36.3%
CSS
2.5%
HTML
2.3%
Adium is an open source and free instant messaging application for macOS that can connect to XMPP (Jabber), IRC and more.
Objective-C
7
1,093 commits
updated Sep 22, 2026
This is a fork of the original Adium (source) that revives and modernizes it for current macOS. It began as an Apple Silicon (arm64) port, as the original is an Intel-only binary from 2021. Since then much has changed: WhatsApp, Telegram, Signal and Microsoft Teams arrived next to the classic services that stood the test of time, encrypted voice and video calls over XMPP, full Dark Mode, replies straight from Notification Center banners, a rebuilt System Settings-style preferences window, a WKWebView message view, and a long list of fixes for how modern macOS behaves.
Adium was created and developed by the Adium team. All credit for the application itself belongs to the original developers; see Copyright.txt. This fork is not affiliated with or endorsed by them. It is maintained by a long-time Adium user who simply wants to keep a beloved app alive after many years of use. The upstream project has been inactive since 2021.
Current version: 1.8.0.
Still supported classic services: XMPP/Jabber, IRC, Gadu-Gadu, Novell GroupWise and SIMPLE, plus OTR and OMEMO encryption and tabbed chats in a modern look.
Conversations, Gajim, Dino and Monal encrypt with OMEMO, most of them by default, and until now a message from any of them arrived as the apology its sender attached for clients that cannot read one. Adium reads them now, and writes them.
Encrypted one to one conversations (XEP-0384, the widely spoken namespace rather than the newer one)
A padlock that closes only when the message really is encrypted, not when it has merely been asked for
Every device the other person has, shown in the encryption menu with its fingerprint, each one to be accepted or turned down; ours is at the top to be read out
Rather fail than fall back: a message that cannot be encrypted waits, and then says so, instead of going out in the clear
Says what it used so a client that cannot read the message can explain why (XEP-0380)
Pictures and voice notes are encrypted too (XEP-0454): what goes up to the file server is bytes nobody there can read, and what arrives is played or shown rather than left as an address
Group chats are not encrypted yet.
Adium can place and take calls again, encrypted the way modern clients insist on. The signalling is Adium's own, written against the XEPs; the media runs through Google's WebRTC natively.
.AdiumPlugin bundle carrying one JavaScript
file that changes how messages are displayed. It works in every
message style, needs no compiled code, and therefore never worries
about processor architecturesOther/XtrasCreator): it authors
emoticon sets, sound sets, status/service/menu-bar/group-chat icon
packs, dock icons, message styles, contact list themes and layouts,
and script packs, and writes the description Adium shows on an
xtra's pageAdium's development did not stop at the last state of adium/adium: the Mercurial mainline and community branches continued toward an Adium 1.6/1.7 that was never released, preserved today in forks such as shtrom/adium.
This is a work in progress; expect rough edges.
For Intel Macs and older systems, use the original Adium 1.5.10.4.
git clone --recursive https://github.com/KnutMann/adium.git
cd adium
./bootstrap.sh
The app lands in build/Release/Adium.app (ad-hoc signed, so it runs
on the machine that built it; distributing binaries to others would
require a proper signing identity). bootstrap.sh builds the
AIUtilities and MMTabBarView subprojects first and stages their
products, then builds the main project.
One command from a fresh checkout to an installed application:
./install.sh
Everything beyond Xcode is checked into the repository as prebuilt arm64
binaries. The script verifies the bundled protocol plug-ins (including a
functional probe that asks libpurple itself whether every plug-in's protocol
registers - the failure mode it guards against is silent), builds the app,
verifies the result and installs it to /Applications. --build-only skips the
install, --debug builds the Debug configuration. The same verification runs
as a phase of every Xcode build.
The XtrasCreator companion app (see Tools above) builds
separately:
xcodebuild -project Other/XtrasCreator/XtrasCreator.xcodeproj build.
Three things are fetched rather than vendored, and both bootstrap.sh
and install.sh get them by running Dependencies/fetch.sh before they
build anything. It is idempotent and takes about a second once
everything is in place, so there is no reason to skip it:
git submodule update --init --recursive)Without them the build fails at a compiler error naming a header, which says nothing about a download being what was missing.
All other required libraries (libpurple, glib, libotr, libgcrypt, ...)
are vendored as prebuilt arm64 frameworks in the repository. Rebuilding
them from source is only necessary when upgrading a dependency or
patching one; see Dependencies/build.sh (this does require a
Homebrew toolchain).
The source in this repository is GNU GPL v2 or later, see License.txt. Original code copyright the Adium team and contributors (Copyright.txt).
The application you build from it is not GPL v2, and it is worth being plain about why. Several of the bundled plug-ins carry stronger terms, and since every source file here says "or later", combining them is permitted; what it costs is the GPL v2 option for the finished binary, not the licence of the sources.
libsignal-presage.so is GPL v3 itself, and the Rust it links in
statically (presage, presage-store-sqlite and
libsignal-service-rs) declares AGPL-3.0-only in its own
Cargo.toml. The Affero terms therefore reach the shipped binary.libwhatsmeow.so, libteams.so and libteams-personal.so are
GPL v3.libtelegram-tdlib.so links the bundled OpenSSL 3, whose Apache 2.0
terms do not combine with GPL v2 at all. The same OpenSSL is now used
by AdiumLibpurple itself, for the cryptography behind OMEMO, so this
one is no longer confined to a plug-in.The texts those terms require to travel with the work are in Licenses/: GPL-3.0.txt and AGPL-3.0.txt.
Leaving out the plug-ins, which the scripts allow, drops the GPL v3 and AGPL terms but not the OpenSSL one, so such a build is GPL v3 or later rather than v2. The sources themselves stay GPL v2 or later, and it is only the combination that moves.
This repository ships some components as prebuilt arm64 binaries. The
corresponding sources are publicly available at the exact revisions
listed here (the Dependencies/patches/ directories document every
local change on top of them):
| Binary | Project | Revision | License |
|---|---|---|---|
PurplePlugins/libwhatsmeow.so | purple-gowhatsapp | c58fcbac9aa7210ce08cf12ef3442932730ec312 | GPL v3 |
PurplePlugins/libtelegram-tdlib.so | tdlib-purple 2.1.0 | b277ac1941dbed946444454f67b89265541237b7 | GPL v2 |
(statically inside libtelegram-tdlib.so) | TDLib 1.8.65 | a8f21f5230172634becc1739050ef23ecd6ea291 | Boost 1.0 |
PurplePlugins/libsignal-presage.so | purple-presage | c4c9b8d8e1a822f973520e8870aba1d2347b18c6 (nightly-20260810) | GPL v3, with AGPL v3 parts statically linked in (see below) |
PurplePlugins/libteams.so, libteams-personal.so | purple-teams | 62f6fff | GPL v3 |
PurplePlugins/libircv3.so | purple2-ircv3 | 0e73297 | GPL v2 |
Frameworks/libssl.3.dylib, libcrypto.3.dylib | OpenSSL 3, used by TDLib inside the Telegram plugin | Homebrew build | Apache 2.0 |
Frameworks/libwebp.7.dylib, libsharpyuv.0.dylib | libwebp | Homebrew build | BSD 3-Clause |
Frameworks/libpng16.16.dylib | libpng | Homebrew build | libpng/zlib |
Frameworks/libotr.framework and friends | libotr, libgcrypt, libgpg-error, gettext | Homebrew builds | GPL v2 / LGPL v2.1 |
libpurple, glib and the other core dependencies are not shipped as
binaries; they are built from source by the scripts in Dependencies/
(which pin the exact versions, e.g. libpurple 2.14.14). The LGPL
components are dynamically linked, so they can be swapped out by
rebuilding the bundle.
Objective-C
56.6%
C
36.3%
CSS
2.5%
HTML
2.3%