Hi everyone,
I wanted to share a passion project I've been working on that might be highly useful for the Mac users in this community.
If you work with z/OS on a Mac, you've likely noticed a gap in the tooling: most decent TN3270 clients either come with hefty commercial licensing fees or rely heavily on Java or X11, which can feel out of place on modern macOS. I was frustrated by this, so I spent some time reading through the old IBM GA23-0059 manuals and built a lightweight alternative from scratch.
It's called X3270, and it is completely free and open-source (MIT License). It went surprisingly viral on LinkedIn recently, so I wanted to make sure I shared it with the core community here.
My main goal was to build something that feels like a truly native citizen on macOS while perfectly respecting the classic 3270 data stream.
Here are some of the technical highlights:
-
Truly Native: Built entirely in C++ and Objective-C++ on top of native Cocoa and CoreText. No Java and no X11 required.
-
Full TN3270E Support: Handles full protocol negotiation including the ISPF Query Reply, so your menus and layouts render correctly right out of the box.
-
Modern Security: Supports implicit TLS (TLS 1.2+) on any port via native OpenSSL integration.
-
Multiple Screen Models: Dynamically supports Models 2, 3, 4, 5, and a custom Large model (62 × 160) utilizing 14-bit buffer addressing.
-
Authentic Look: It ships with the beautiful open-source IBM 3270 terminal font by Ricardo Bánffy bundled directly in the app.
-
Export & Capture: Includes features to save pixel-perfect PNG screenshots or export the screen buffer directly to formatted UTF-8 text files.
X3270 runs on macOS 12 Monterey and later, with native support for both Apple Silicon and Intel.
If you are looking for a fast, native, and free way to connect to your mainframes from a Mac, I'd love for you to give it a try.
You can find the pre-built DMGs and the full source code on GitHub here: https://github.com/el-dockerr/X3270
I am always looking for feedback, so feel free to drop your thoughts, bug reports, or feature requests in the thread below or directly on GitHub.
Best regards, Swen
------------------------------
Swen Kalski
------------------------------