txw

native macos app · 02

Mach

An XMPP client for the Mac, made for fun.

Mach is an XMPP client created for fun and meant to look at home on macOS in 2026. An AI wrote it. I directed it and tested it. It does end-to-end encryption with OMEMO:2 and OMEMO legacy — and specifically not OMEMO:1. You can message your friends, and send them images, encrypted.

01 Built for the Mac

It’s all Swift.

SwiftUI, Swift logic, OMEMO in Swift et al. No external dependencies or shims in other languages.

Liquid Glass

It uses macOS 26’s Liquid Glass material, as a path of least resistance to look at home on modern macOS desktops. Even if you don’t like it, it is the design spec du jour.

The OMEMO implementation is original.

The AI wrote the OMEMO implementation from scratch in Swift. It does not use libsignal or any other existing library. It does OMEMO:2 and legacy OMEMO, and specifically not OMEMO:1.

Freedom of XMPP

Use your XMPP account. Get friends to sign up with IBR. Have a nice chat from the comfort of your Mac with friends from afar. That ain’t AI, I just felt poetic.

02 What it is

Mach is an XMPP client created for fun and is meant to look at home on macOS in 2026. It supports end-to-end encryption with OMEMO:2 and OMEMO legacy — and specifically not OMEMO:1. You can send messages to your friends, and images via the HTTP-Upload service provided by XMPP servers, with AES-GCM encryption for the image payloads too.

An AI wrote it. I am not a programmer — I’m doing cosplay. What I did was direct it and test it against other clients and against XEP compliance.

I’ve tried to get it to the point where I can reliably use it as a daily driver to replace Signal. I wanted something that would look and feel as good as the Signal and WhatsApp clients on macOS, so that others may have less resistance to joining their friends on XMPP.

It is built entirely in Swift. As a result, it has implementations of OMEMO performed in Swift, and does not use any existing libraries such as libsignal. It is shown that OMEMO encryption validates with peers. Majority of the primitives are Apple’s — AES-GCM, SHA-512, HKDF and X25519 key agreement come from CryptoKit, and AES-CBC from CommonCrypto, because CryptoKit does not expose raw CBC.

🚨🚨The AI wrote the elliptic curve code too. OMEMO needs XEdDSA — signatures made with a Curve25519 key — and CryptoKit does not provide it. Not just a helper either: the field arithmetic over GF(2^255−19), the scalar arithmetic modulo the group order, and the whole Edwards curve group law. CryptoKit only hashes. That is about 1,100 lines of elliptic curve code under every identity signature Mach makes, written by a language model.

🚨🚨It has not been audited. The addition happens on every step of the scalar multiplication and is selected with a mask, so the work is the same whatever the key is. Some lower-level reductions still take a value-dependent number of passes, so I can’t tell you it is constant-time, only that the obvious leak is gone. Nobody has attacked it, and I wouldn’t know how — which is exactly the problem. That is what auditors are for. That it validates against Conversations, Kaidan and Gajim proves it is correct. It does not prove it is safe.

It is definitely true that you can use a perfectly good lock in a totally wrong way to provide no security, so buyer beware. This is not something to use to call Harrison Ford or Liam Neeson in a film.

There is a roadmap to support A/V calls — and even some fun QUIC-based A/V calls.

Yes, there are nasty bugs. Yes, it is AI slop. I have taken time to test it and try to make it useful for anyone else in the world who may see value in it. I can talk to my friends on a user interface I actually like, on a protocol I want others to love, and that’s enough for me. So it goes.

Considering only one other person has tested it so far, it will likely fall on its face somehow. So it goes. Thank you for your consideration.

03 How it works

  1. 01

    Install and register

    In-band registration with a CAPTCHA works against chatterboxtown.us — you can install Mach and have an account within seconds. The other options fail, sadly, so bring an existing account if you have one.

  2. 02

    Message your friends

    One-to-one chats and multi-user rooms. Send images through the server’s HTTP-Upload service, with the payloads encrypted using AES-GCM.

  3. 03

    Read it anywhere

    Carbons put your sent messages on your other devices instantly, and MAM back-fills whatever the server queued for you while you were offline.

04 What’s in it

OMEMO:2 and legacy

End-to-end encryption the AI wrote from scratch in Swift — OMEMO:2 and legacy OMEMO, deliberately not OMEMO:1. No libsignal. Not audited.

Encrypted images

Images go through the XMPP server’s HTTP-Upload service, with AES-GCM encrypted payloads.

I tested it against real clients

I exchanged messages with Conversations on Android, Kaidan on Linux, and Gajim on Linux and macOS. Kaidan properly exchanges OMEMO:2 encrypted messages.

Carbons and MAM

Sent messages appear on your other devices instantly, and the archive back-fills what the server queued while you were away. I tested both with Conversations and Gajim.

Group chat

Multi-user rooms (MUC), tested against the same clients.

Seconds to an account

In-band registration with CAPTCHA against chatterboxtown.us — install, register, and start talking.

05 See it

Mach’s welcome screen with a list of saved XMPP accounts to sign in with
sign in, or add another account
A one-to-one Mach conversation with sent messages and a Blind Trust badge
a one-to-one chat, encrypted with OMEMO
Mach signed in with an empty contact list
a fresh account, seconds after registering

06 Get it

Mach is native macOS, built for macOS 26 (Tahoe) and later. This is a notarized pre-release. Messaging works and I have tested it against other clients. A/V calling is still on the roadmap.

Download Mach 0.1.0 (build 310)

Mach-0.1.0+b00310-5986383e.dmg · 46 MB · macOS 26 (Tahoe)+ · Apple Silicon · notarized & stapled

Pre-release build. Verify with shasum -a 256: f6fead80d7729342456fe428ed7f11778f197e398de7e7140bff5cd59364be75. 🚨 The OMEMO was written by an AI, including the XEdDSA elliptic-curve code that CryptoKit does not provide. It has had no independent security audit — buyer beware.