$cat ./software/posirc/README

POSIRC

IRC, with a small footprint.
A lightweight, portable terminal client by 1AT106 / 1XZ001 Vash.

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.

Current download: a beta release. See the release notes for the exact packages and their requirements; the repository documents ongoing development.

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.

Targets configured in the GitHub Actions release workflow
SystemCPU targetsBuilds
Linuxx86-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-642
FreeBSD 14.4x86-64, ARM64, RISC-V 64, PowerPC 64 (big-endian)4
OpenBSD 7.9x86-64, ARM642
NetBSD 10.1x86-64, ARM64, SPARC643

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.

Additional build environments to explore through GitHub Actions
System / environmentAdditional targets
Linux / openEulerLoongArch64, alongside the x86-64, ARM64 and RISC-V families
OpenBSDRISC-V 64 and SPARC64
NetBSDRISC-V 64, extending the existing x86-64 / ARM64 / SPARC64 matrix
DragonFly BSD, MidnightBSD, GhostBSD, HardenedBSD, OPNsensex86-64
NextBSDx86-64, ARM64
Solarisx86-64
illumos: OmniOS, OpenIndiana, Tribblixx86-64
GNU Hurdx86-64, i386
Haikux86-64

These environments are listed in the VM Actions platform catalogue; availability depends on the action's OS release and architecture matrix. They are candidates for future POSIRC builds.

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.

Source: QEMU target definitions and user-mode documentation. This is an emulation research list, not a claim that POSIRC builds or runs on every target. Toolchains, userspace libraries and emulator behavior must be checked individually.

Lightweight, with measurements

POSIRC keeps memory use bounded and allocates conversation histories on demand. The published Linux x86-64 development benchmark records:

Resident memory (RSS), dynamically linked development build
WorkloadMemory
Offline idle5.88 MiB
Connected over TLS, idle11.33 MiB
20 channels, 1,000 messages/s total14.09 MiB

The 20-channel workload used 2.90% of one CPU core on the benchmark machine, an AMD Ryzen 7 5800X.

These are measured results for a dynamically linked development build, before later interface changes. They are not memory limits or measurements of the static beta packages, which bundle libraries. Results depend on the system and workload. See the benchmark data and method.

Everyday IRC, in the terminal

[conversations]

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.

[Unicode]

A curses interface with UTF-8

Edit UTF-8 text and read IRC colors in a keyboard-driven terminal interface.

[TLS]

Verified connections

Every connection uses TLS with certificate and server identity verification. A custom CA file can be supplied for a private server.

[pipes]

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.