A community fork of Textual, the macOS IRC client originally built by Codeux Software. The upstream project is archived. Textwerk modernizes the codebase and targets macOS 26+.
- Multi-server, multi-channel IRC client with a single sidebar for all your networks
- ZNC bouncer aware, with auto-join handling, message playback, and self-message support tuned for bouncer setups
- SASL authentication
- Chat history backfill after reconnecting, with read-marker sync so unread badges stay consistent across other clients on the same account/bouncer
- Small nickname indicator for users who aren't logged into services, once the server confirms account status
- Inline previews for links (YouTube, Twitch, Vimeo, Streamable, Imgur, Gyazo, Dailymotion, images)
- DCC file transfers
- AppleScript-based plugin/scripting support
- Multiple bundled themes, switchable live, including a default theme with grouped consecutive messages, so there's no repeated timestamp/nickname when someone sends several messages in a row
- Native macOS notifications
- Automatic upgrade to a secure connection on networks that advertise support for it
- Server errors and warnings shown as readable messages instead of raw numeric codes
- Give/Take Op, Halfop, Voice, and Owner (+q) from the member list, when supported by the server
- Query windows show a "common channels" info bar when someone messages you first
- Unified title bar, with the secure-connection lock and channel title inline with the traffic-light buttons
- Renamed from Textual to Textwerk, since the original project is archived; this is a separate community fork
- Requires macOS 26 (Tahoe) or later
- Fixed blank/frozen channel views and connection crashes on macOS 26
- Fixed the scrollback history service crashing on every launch, and saved keychain passwords disappearing after the rename
- Fixed a crash when changing theme/style settings
- Real automatic updates: Sparkle now checks GitHub Releases directly instead of a broken placeholder
- Detects and offers to import your settings from an existing Textual install on first launch (see "Migrating from Textual" below)
- Flatter, more modern look: reworked topic bar, no gradients or drop shadows, updated default font, taller sidebar rows, instant theme switching with no fade delay
- Network name stays bold in the server list while that server is active or selected
- Removed OTR and Blowfish message encryption support
- Removed dead Help menu items pointing to Codeux Software's now-defunct FAQ, support, and license pages
Grab the latest build from the Releases page and unzip it into your Applications folder.
Releases are unsigned. macOS will block the app on first launch. To open it anyway, right-click the app and choose Open, then confirm in the dialog. Alternatively, remove the quarantine attribute from the terminal:
xattr -d com.apple.quarantine /Applications/Textwerk.appYou need Xcode 16+ and a valid code signing identity (does not need to be issued by Apple).
Set your signing identity in Configurations/Build/Code Signing Identity.xcconfig before building. Do not change it through Xcode.
git clone https://github.com/bashgeek/Textwerk.git
cd Textwerk
./build.shThe built app lands in ./build/Textwerk.app.
Manual xcodebuild invocation
xcodebuild \
-project "Sources/App/Textwerk App.xcodeproj" \
-scheme "Textwerk (Standard Release)" \
-derivedDataPath ./build/DerivedData \
CONFIGURATION_BUILD_DIR=./build \
buildIf you're coming from the Mac App Store version or the standalone version from codeux.com, Textwerk will detect your existing settings on first launch and offer to import your servers, channels, and preferences.
You can also trigger this at any time from Help → Advanced → Import from Previous Textual…
Textual began as a fork of LimeChat in 2010.
LimeChat (BSD 2-Clause) Copyright (c) 2008-2010 Satoshi Nakagawa
Textual (BSD 3-Clause) Copyright (c) 2010-2020 Codeux Software, LLC & respective contributors
Both licenses require preserving copyright notices in source and binary distributions. The name "Textual" and "Codeux Software, LLC" may not be used to promote products derived from this software without prior written permission.
Full license text for both is reproduced below.
LimeChat license
The New BSD License
Copyright (c) 2008 - 2010 Satoshi Nakagawa <psychs AT limechat DOT net>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
Textual license
Copyright (c) 2010 - 2020 Codeux Software, LLC & respective contributors.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Textual, "Codeux Software, LLC", nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
Textwerk bundles or links against the following third-party components:
| Component | License | Copyright |
|---|---|---|
| GRMustache | MIT | (c) 2014 Gwendal Roué |
| AutoHyperlinks Framework | BSD 3-Clause | (c) 2005-2011 The Adium Team, (c) 2011 Codeux Software, LLC |
CocoaAsyncSocket (GCDAsyncSocket) |
Public Domain | Originally by Robbie Hanson; maintained by Deusty LLC |
| Colloquy (Chat Core) | BSD-style | (c) 2000-2012 the Colloquy IRC Client, used for a portion of SASL authentication handling in IRCClient.m |
| Sparkle | MIT (plus bundled bsdiff, sais-lite, ed25519, and SUSignatureVerifier components under their own permissive licenses) |
(c) 2006-2017 Andy Matuschak and contributors |
The "Cocoa Extensions" internal helper framework also carries a small number of third-party snippets (Dave Dribin's MIT-licensed code, an Apple sample-code snippet, and a Chromium-derived NSString helper); see Frameworks/Cocoa Extensions/ACKNOWLEDGEMENT.txt, which ships inside the app bundle alongside the framework.

