POSIRC brings IRC to your terminal with a small C99 client, a Unicode interface and verified TLS on every connection. Chat with people, send text from a shell pipeline or stream channel messages into another program.
Portable by design. Light on resources.
C99, POSIX APIs, curses and OpenSSL. No scripting runtime. Bounded buffers and histories that allocate memory only as needed. 19 system/CPU build targets across five operating systems, from x86 and ARM to RISC-V, PowerPC, IBM Z and SPARC64, with a wider portability roadmap ahead.
19 build targets. Five operating systems.
Portability reaches well beyond a single desktop platform. The GitHub Actions build matrix defines 19 combinations of operating system and CPU. It covers 32-bit and 64-bit x86, three ARM variants, RISC-V, both little-endian and big-endian PowerPC 64, IBM Z and SPARC64.
| System | CPU targets | Builds |
|---|---|---|
| Linux | x86-64, x86 (i686 with CMOV/SSE2), ARM64, ARMv7, ARMv6, RISC-V 64, PowerPC 64 little-endian (ppc64le), IBM Z (s390x) | 8 |
| macOS 15+ | Apple Silicon / ARM64, Intel / x86-64 | 2 |
| FreeBSD 14.4 | x86-64, ARM64, RISC-V 64, PowerPC 64 (big-endian) | 4 |
| OpenBSD 7.9 | x86-64, ARM64 | 2 |
| NetBSD 10.1 | x86-64, ARM64, SPARC64 | 3 |
Each target builds the client and runs its tests, using native runners, x86 compatibility mode or QEMU emulation as specified in the workflow. BSD targets run inside full-system virtual machines. This keeps the portability work tied to executable tests across the matrix.
For downloads, choose the published archive matching your operating system and CPU, extract it and run ./posirc --version. The release notes list the packages available for that version.
Linux releases are single, statically linked executables with musl, OpenSSL and ncurses embedded. They need no host glibc or separately installed OpenSSL/ncurses shared libraries. CA certificates and terminal descriptions are still required.
macOS packages embed OpenSSL and ncurses while using Apple system libraries; they are ad-hoc signed, without Apple notarization. BSD packages use base-system libraries and must match the listed OS release and CPU.
Prefer to build it yourself? The source uses a C99 compiler and a POSIX Makefile, with wide-character curses and OpenSSL-compatible TLS. See the build instructions and installation guide.
Portability roadmap: more systems, more CPUs
The aim is to bring this small client to as many suitable systems as possible. GitHub Actions can host additional virtual machines and custom emulation workflows, opening up a much wider range of build targets.
Planned expansion — POSIRC validation pending.
The candidates below come from documented CI and emulation capabilities. Adding each one requires a suitable C99/POSIX environment, curses and TLS libraries, followed by a successful POSIRC build and tests. Downloadable packages will follow validation.
| System / environment | Additional targets |
|---|---|
| Linux / openEuler | LoongArch64, alongside the x86-64, ARM64 and RISC-V families |
| OpenBSD | RISC-V 64 and SPARC64 |
| NetBSD | RISC-V 64, extending the existing x86-64 / ARM64 / SPARC64 matrix |
| DragonFly BSD, MidnightBSD, GhostBSD, HardenedBSD, OPNsense | x86-64 |
| NextBSD | x86-64, ARM64 |
| Solaris | x86-64 |
| illumos: OmniOS, OpenIndiana, Tribblix | x86-64 |
| GNU Hurd | x86-64, i386 |
| Haiku | x86-64 |
Explore the full Linux CPU research list
Custom workflows can also combine a target toolchain and Linux userspace with QEMU. Beyond the current release matrix, the research list covers every Linux user-mode CPU target currently declared by QEMU:
- x86: i386 and x86-64.
- ARM: 32-bit little- and big-endian; AArch64 little- and big-endian.
- RISC-V: 32-bit and 64-bit.
- PowerPC: 32-bit, 64-bit big-endian and 64-bit little-endian.
- IBM Z: s390x.
- SPARC: SPARC32, SPARC32PLUS and SPARC64.
- MIPS: 32-bit, 64-bit and N32 ABI, each in little- and big-endian variants.
- LoongArch: LoongArch64.
- Other CPU families: Alpha, HPPA / PA-RISC, Motorola 68000 (m68k), Hexagon and OpenRISC (or1k).
- MicroBlaze, SuperH SH-4 and Xtensa: little- and big-endian variants.
Lightweight, with measurements
POSIRC keeps memory use bounded and allocates conversation histories on demand. The published Linux x86-64 development benchmark records:
| Workload | Memory |
|---|---|
| Offline idle | 5.88 MiB |
| Connected over TLS, idle | 11.33 MiB |
| 20 channels, 1,000 messages/s total | 14.09 MiB |
The 20-channel workload used 2.90% of one CPU core on the benchmark machine, an AMD Ryzen 7 5800X.
Everyday IRC, in the terminal
Separate buffers, less clutter
Channels and private conversations have their own histories and input drafts. User lists and unread markers help you keep track of the conversation.
A curses interface with UTF-8
Edit UTF-8 text and read IRC colors in a keyboard-driven terminal interface.
Verified connections
Every connection uses TLS with certificate and server identity verification. A custom CA file can be supplied for a private server.
Fits into Unix workflows
Send lines from standard input to a channel, or use -o to stream received messages as nickname-and-text records. Pipe modes work without a terminal.
Get connected
After extracting the matching package, choose an available nickname and join us on Libera.Chat:
./posirc -s irc.libera.chat -p 6697 -n yournick -j '#xzgroup'
Replace yournick with your nickname. Use /help inside the client for commands and keyboard shortcuts.
Community and development
If POSIRC is useful to you, support development with a PayPal donation. Testing, feedback and bug reports help the project grow across more systems.
IRC channel: irc.libera.chat #xzgroup
Developer info: info@xzgroup.net
Bug reports: POSIRC on GitHub
Status and license
POSIRC is currently in beta. SASL, server passwords, automatic reconnect and scrollback storage on disk are not implemented yet. Servers requiring SASL or a server password cannot be used at this stage.
POSIRC source and binaries are distributed under GNU GPL v3.0 only. Third-party libraries retain their own licenses.