C‑Kermit 11 Release – First New Version in 15 Years Revives a 45‑Year‑Old Protocol

What C‑Kermit 11 delivers and why it matters

C‑Kermit 11 is the first new version of the flagship Kermit implementation in 15 years, bringing a 45‑year‑old serial‑file‑transfer protocol up to modern security, networking, and testing standards. The release makes Kermit viable for contemporary use cases—SSH‑wrapping, embedded firmware updates, and cross‑platform LAN transfers—while preserving its historic ability to run on legacy systems.


Historical context: from 1981 serial bridges to today’s networked world

  • In 1981 Frank da Cruz and Bill Catchings created the Kermit protocol to enable reliable file transfers over noisy serial links between heterogeneous mainframes (DEC‑20, IBM).
  • By 1982 Kermit was ported to MS‑DOS and Unix, and the C implementation (C‑Kermit) became the de‑facto reference, adding TCP support, an interactive CLI, and a Lisp‑like scripting language.
  • Kermit has been used in high‑profile missions—including the International Space Station, hurricane‑sensor data collection, Boeing 787 manufacturing, and firmware updates for embedded devices.
  • After Columbia University cancelled the Kermit Project in 2011, the code was relicensed under a BSD license and maintained by Frank da Cruz until his retirement in 2025.

Modernizing a decades‑old C codebase

Security and reliability improvements

  • Fixed numerous memory‑safety bugs and added protections against malicious remote exploits, mirroring the security hardening that later patches applied to scp.
  • Replaced ambiguous default character‑set conversions with byte‑identical binary mode, eliminating historic data‑corruption cases.

Networking upgrades

  • Added conditional IPv6 support, with runtime fallbacks for systems lacking IPv6 connectivity.
  • Introduced a new show interfaces command (C‑Kermit 11) to list local IP addresses, simplifying LAN‑based transfers.

Test infrastructure

  • Implemented a Python‑driven end‑to‑end test suite covering ~2 000 cases, including compatibility checks against gKermit, eKermit, and the last full release (C‑Kermit 9.0.302, 2011).
  • Discovered and fixed platform‑specific bugs such as macOS FIONREAD misbehavior and NetBSD PTY driver issues.

Codebase cleanup

  • Imported historic releases into Git (originally done by Jeffrey Altman) and removed dead #ifdef blocks, reducing the total line count.
  • Adopted modern CI pipelines that build on Linux (x86_64, arm64), macOS, FreeBSD, NetBSD, OpenBSD, and produce a statically linked musl‑based Linux binary.

Community reaction and insights from the discussion

"I enjoy working in a legacy C codebase" – John Goerzen (author of the release)
The author notes that despite the code’s age, its design for VMS, OS/2, and pre‑ANSI compilers gave it an unexpected elegance.

"I’m a gray‑beard and still use Kermit regularly for embedded development" – voakbasda (HN comment)
Highlights continued relevance for serial‑console automation.

"C‑Kermit can be used as a powerful SSH wrapper" – donflamenco (HN comment)
Confirms a practical use‑case: inline file transfers over an open SSH session without needing Zmodem.

"Kermit source code remains the high‑water mark… for how many different, incompatible, non‑standard platforms one piece of software can support" – jonathaneunice (HN comment)
Underscores the historic portability achievements of the project.

"There’s not as much demand for gKermit now that C‑Kermit is BSD‑licensed and tiny" – John Goerzen (HN comment)
Explains why the lightweight gKermit fork may see reduced interest.


Release assets and how to get involved


Dedication to Frank da Cruz

C‑Kermit 11 is dedicated to Frank da Cruz, who was directly involved with Kermit for 44 years—from its 1981 design through the 2025 open‑source hand‑off. The dedication notes that no other open‑source project has seen such long‑term founder involvement.


Why the release matters for the future of legacy protocols

  • Preservation: By moving the code into a modern VCS and adding CI, the project safeguards a historically important protocol against bit‑rot.
  • Interoperability: Updated defaults and IPv6 support ensure Kermit can still act as a bridge between legacy hardware (e.g., HP 48 calculators) and modern networks.
  • Security: Addressing memory‑safety and remote‑code‑execution risks makes Kermit safe for use in critical environments such as firmware flashing and sensor data collection.
  • Community vitality: The enthusiastic responses from long‑time users and newcomers alike demonstrate a healthy ecosystem that can sustain further development.

Bottom line

C‑Kermit 11 revitalizes a 45‑year‑old file‑transfer protocol by fixing security flaws, adding IPv6, modernizing the test suite, and cleaning up the codebase, thereby ensuring Kermit remains a practical tool for both vintage enthusiasts and contemporary developers.

Sources