Feature Comparison - davidrg/ckwin GitHub Wiki

This page provides quick comparison of Kermit 95 with other open-source terminal emulators for Windows. Most of this information has been taken from the following locations:

If you see something on here that isn't correct (or something you think shouldn't be left out) please correct it or raise it over on github discussions so it can be corrected! It isn't helpful to anyone if some part of this page is incorrect or misleading.

Connection Protocols

Virtual Terminal connections over the following protocols/connection types:

Feature Kermit 95 TeraTerm PuTTY
Serial βœ… βœ… βœ…
RFC2217 Serial over Telnet βœ… ❌ ❌
SSH v1 ❌ βœ… βœ…
SSH v2 βœ… (XP SP3+) βœ… βœ…
Telnet βœ… βœ… βœ…
Telnet-SSL βœ… (XP SP3+) ❔ ❔
RLogin βœ… ❌ βœ…
Named Pipe βœ… βœ… βœ…
NetBIOS βœ… (OS/2 only) ❌ ❌
PTY βœ… (Windows 10 v1809+) ❌ βœ… (pterm)
Cygwin ❌ † βœ… ❌
CTERM βœ… (Requires Pathworks32) ❌ ❌
LAT βœ… (Requires Pathworks32) ❌ ❌
Modem βœ… TAPI, RFC2217, built-in ❌ ❌
DLL βœ… ‑ ❔ ❔
SUPDUP ❌ ❌ βœ…

For more details on supported telnet options, see Telnet Options further down this page

† While Kermit 95 has no specific support for Cygwin, you can access the Cygwin console via a PTY on sufficiently new versions of Windows. PTYs on Windows do come with some limitations though so it's not a true replacement for proper Cygwin support. You can open a Cygwin session in K95 with a command such as pty cmd /c C:\\cygwin64\\cygwin.bat

‑ K95 can make connections via a user-supplied/written DLL allowing support for other protocols not built-in.

IP Connections Types

IP connections (SSH, Telnet, etc) can be made via the following methods:

Feature Kermit 95 TeraTerm PuTTY
IPv4 βœ… βœ… βœ…
IPv6 ❌ † #224 βœ… βœ…
SOCKS 4/5 Proxy ❌ ‑ #78 βœ… βœ…
HTTP Proxy ❌ ‑ #78 βœ… βœ…
Telnet Proxy ❌ βœ… βœ…

† IPv6 is only usable SSH connections

‑ Note that K95 does support HTTP and SOCKS proxy connections for telnet and RLogin, proxies are only unsupported for SSH.

Forwarding

Feature Kermit 95 TeraTerm PuTTY
X11 over SSH βœ… βœ… βœ…
X11 over Telnet βœ… ❌ ❌
Port forwarding over SSH βœ… βœ… βœ…
Dynamic forwarding over SSH ❌ #297 βœ… βœ…

File Transfer

Protocol Kermit 95 TeraTerm PuTTY
Kermit βœ… Complete implementation including server support βœ… limited † ❌
IKS Server βœ… ❌ ❌
X-MODEM βœ… βœ… ❌
Y-MODEM βœ… βœ… ❌
Z-MODEM βœ… βœ… ❌
B-PLUS ❌ βœ… ❌
Quick-VAN ❌ βœ… ❌
FTP βœ… ❌ ❌
FTPS βœ… (XP SP3+) ❌ ❌
HTTP βœ… ❌ ❌
HTTPS βœ… (XP SP3+) ❌ ❌
SFTP ❌ #219 βœ… βœ…
SCP ❌ βœ… βœ…
None ‑ βœ… βœ… ❌

† Tera Terms Kermit implementation is fairly limited lacking support for server mode or network connections, and appears to have only very limited protocol options.

‑ Transmit a file as though it were typed in to the keyboard. Both TeraTerm (File -> Send file) and Kermit 95 (the transmit command, configured via the set transmit commands) support doing this, optionally with a delay between each line or character.

Platform Support

The platforms supported by the latest stable release only. Note that Kermit 95s beta releases are stable releases for all intents and purposes - the last proper stable release was in 2003 and isn't freely redistributable. Kermit 95 3.0 will likely loose the beta tag once the features that went missing in its open-sourcing have been added back in.

Feature Kermit 95 TeraTerm PuTTY
Version Kermit 95 3.0 beta 7 (27 January 2025) Tera Term 5.3 (8 September 2024) PuTTY 0.83 (28 February 2025)
Minimum Windows Version NT 3.50, 95 (SSH and Secure Telnet require XP SP3 or newer) v5.3 needs at least Windows Vista (Windows XP gives "Not a valid Win32 application") Windows XP (Windows 2000 and older produce "Not a valid win32 application"). 3rd-party (not always up-to-date) builds exist for older Windows versions not officially supported, including Win32s.
Native x86-64 Windows support βœ… ❌ not supported but can apparently be built from source βœ…
Native ARM64 Windows support βœ… ❌ βœ…
Native ARM32 Windows support βœ… ❌ βœ…
Other Windows Architectures Alpha, MIPS, PowerPC, Alpha64 and Itanium (all without SSH support) none none officially, but 3rd party builds (not always up to date) exist
Minimum OS/2 Version OS/2 2.0 with IBM TCP/IP 2.0 (optional) ❌ ❌ QPutty exists but is a decade out of date
Linux/Unix Support C-Kermit provides most of K95s features, but without terminal emulation (you run it inside one, like xterm) or a built-in SSH client (wraps openssh) ❌ βœ…

Terminal Emulation

Feature Kermit 95 TeraTerm PuTTY
Mouse Input βœ… βœ… βœ…
256 colors ❌ #194 - coming in the next release (beta 8) βœ… βœ…
24-bit color ❌ #220 - coming in the next release (beta 8) ❌ βœ…
Bracketed Paste βœ… βœ… βœ…
Alternate Screen Buffer ❌ #231 βœ… βœ…
OSC 8 Hyperlinks ❌ #123 - an equivalent private escape sequence is supported however ❌ ❌ not supported
Clickable URLs βœ… ❔ ❌ not supported
Unicode βœ… Plane 0 only, #315 for other planes βœ… βœ…
PCTERM Keyboard Mode βœ… ❌ ❌
SGR Bold Attribute βœ… as bold font, bright color, bold font+bright color, or specific color βœ… As font and/or color βœ… Bold font, or ANSI color (or both)
SGR Dim Attribute βœ… same as bold, or a specific (dim by default) color ❌ Unsupported βœ…
SGR Blink Attribute βœ… as blinking text (default), or specific color ❌ As color only βœ… As color by default, blink option under terminal settings
SGR Italic Attribute βœ… as italic font, or specific color ❌ Unsupported ❌ Unsupported
SGR Underline Attribute βœ… as underlined font, or specific color βœ… as font and/or color βœ…
SGR Attributes as Colours βœ… for normal, blink, dim, italic, reverse, underline. βœ… For normal, bold, blink, reverse, url, underline ❌ not supported (except for bold)

Kermit 95

Kermit 95 provides a fairly complete implementation of DECs VT52, VT100, VT102, VT220 and VT320 with colour and mouse extensions, double width and double-height characters, dim characters, italics and underlining. Multiple pages, soft-characters, sixels and ReGIS are not supported at this time.

In addition to the industry standard VT series of terminals, Kermit 95 emulates a wide selection of other terminals including ANSI-BBS; Avatar/0+; AT386; BeBox ANSI; Data General DASHER D200, D210; Data General DASHER D217 in native and Unix modes; Hazeltine 1500; Heath/Zenith 19; Hewlett Packard 2621A; HPTERM; IBM HFT and AIXTERM; IBM 3151; Linux console; Microsoft VTNT; QNX ANSI and QNX Console; SCOANSI; Siemens Nixdorf BA80 and 97801-5xx; Sun Console; Televideo TVI910+, TVI925, TVI950; Volker Craig VC404; Wyse 30, 50, 60, 160, and 370

For more details on the emulation profiles, see this page: https://davidrg.github.io/ckwin/current/termtype.html

TeraTerm

"VT100 emulation and selected VT200/300 emulation", Tektronix 4010

Based on the available documentation, it also implements a selection of VT420 and xterm features: https://teratermproject.github.io/manual/5/en/about/ctrlseq.html

PuTTY

"an xterm terminal emulator", though it should be noted that its emulation does have known bugs and it is missing a substantial number of control sequences and parameters compared to Kermit 95 and TeraTerm.

Other Features

Feature Kermit 95 TeraTerm PuTTY
Initial Release July 2011 (as open source), November 1995 (as Kermit 95), July 1988 (as OS/2 C-Kermit) 2004 (as TeraTerm), 1994 (as TeraTerm Pro) January 1999
Scripting βœ… C-Kermit, REXX (OS/2 and XP+ on x86/x86-64) βœ… "Tera Term Language" ❌ not supported
Keyboard Mapping βœ… βœ… ❌ not-supported
Session Tabs ❌ βœ… ❌
Find Text in Scrollback βœ… ❌ ❌
Bookmarks in Scrollback βœ… ❌ ❌
Log Replaying βœ… † βœ… ^ ❌
Duplicate Session ❌ βœ… βœ…
Optional menubar, toolbar and statusbar βœ… βœ… ❌
Remote access via network or dial-in βœ… ‑ ❌ ❌
stdin/stdout for automation/scripting βœ… ❌ βœ… (plink.exe)
Kerberos Authentication βœ… For SSH, Telnet, Rlogin, IKS and FTP. Requires MIT Kerberos for Windows ❌ βœ…
GUI βœ… Windows only, not on NT 3.50 for Alpha/MIPS βœ… βœ…
TUI/CLI (runs in a Windows console window) βœ… With some limitations to its terminal emulation (eg, no double width/height characters, underlining, etc) ❌ βœ… with no terminal emulation
Configurable per-character delay βœ… for any connection type: set output pacing βœ… For serial only, per character or per line ❌ not supported
GUI Authentication Dialogs βœ… optional βœ… ❌ not supported
Keyboard shortcuts for select & copy βœ… ❔ ❌ not supported
Execute Local Command requested by host βœ… APC - off by default for obvious security reasons, can be limited to "safe" commands only if you trust the host ❌ ❌ not supported

† Based on the TeraTerm documentation it sounds like the "log replay" function effectively just writes the log file out to the terminal emulator which will interpret any escape sequences it contains. The following commands in K95 should achieve the same effect:

SET TERMINAL TYPE VT320   ; Or any other supported terminal type
SET INPUT PACING 50       ; How many miliseconds to pause between each character
SET NETWORK TYPE FILE     ; Connect to a file
SET HOST SESSION.LOG      ; set the filename
CONNECT                   ; connect

If you find yourself doing this often, you could define a macro allowing you to do the job with a single command - log_replay session.log:

def log_reply {
  SET TERMINAL TYPE VT320   ; Or any other supported terminal type
  SET INPUT PACING 50       ; How many miliseconds to pause between each character
  SET NETWORK TYPE FILE     ; Connect to a file
  SET HOST \%1              ; set the filename
  CONNECT                   ; connect
}

‑ Kermit 95 can listen for incoming network or modem connections for remote access. Hostmode, a BBS-like kermit script, is an example of this.

Telnet Options

Contrary to popular opinion, telnet is not equivalent to a raw TCP socket. The telnet protocol supports a large number of options which must be negotiated between the client and server during connection establishment. The table below documents the options supported by one or more of the programs in this comparison. For more information on Telnet support in Kermit 95, see Kermit 95 Telnet Reference. Supported options in PuTTY and Tera Term are from inspecting the code (on 2025-03-03) as their documentation does not explicitly state what is supported. For a list of all possible Telnet options, see Telnet Options at IANA.

Option Name RFCs Kermit 95 TeraTerm PuTTY
0 Binary RFC856 βœ… βœ… βœ…
1 Echo RFC857 βœ… βœ… βœ…
3 Suppress Go Ahead RFC858 βœ… βœ… βœ…
18 Logout RFC727 βœ… ❌ ❌
23 Send Location RFC779 βœ… ❌ ❌
24 Terminal Type RFC1091 βœ… † βœ… βœ…
31 NAWS RFC1073 βœ… βœ… βœ…
32 Terminal Speed RFC1079 ❌ βœ… βœ…
35 X Display Location RFC1096 βœ… ❌ ❌
36 Environment Option RFC1408 ❌ ❌ βœ…
37 Authentication RFC2941 βœ… ‑ ❌ ❌
38 Encryption RFC2946 βœ… Β§ ❌ ❌
39 New Environment RFC1572 βœ… ❌ βœ…
44 Com Port Control RFC2217 βœ… ❌ ❌
46 START TLS Internet Draft βœ… ❌ ❌
47 KERMIT RFC2840 βœ… ❌ ❌
49 Forward X Internet Draft βœ… ❌ ❌
138 Pragma LogonΒΆ None/Proprietary βœ… ❌ ❌
139 Pragma SSP LogonΒΆ None/Proprietary βœ… ❌ ❌
140 Pragma HeartbeatΒΆ None/Proprietary βœ… ❌ ❌
200 IBM SAK †† None? βœ… ❌ ❌

† As PuTTY and Tera Term only emulate a single terminal type, they simply report their terminal type to the remote host. Kermit 95 supports many terminal types, so if the telnet server doesn't like the currently chosen terminal type, Kermit 95 will keep trying different terminal types until it lands on one the server supports. The OpenVMS telnet server is one example of a telnet server that may actually reject a chosen terminal type causing Kermit 95 to switch to another.

‑ Kermit 95 supports Kerberos V authentication on modern Windows hosts if MIT Kerberos for Windows is installed. It can optionally be built from source with Kerberos IV and SRP authentication (requires obsolete/unmaintained libraries).

Β§ Kermit 95 supports all (now quite obsolete) encryption types listed in the RFC: CAST128_CFB64, CAST128_OFB64, CAST5_40_CFB64, CAST5_40_OFB64, DES3_CFB64, DES3_OFB64, DES_CFB64 and DES_OFB64.

ΒΆ Commands to configure these Pragma Systems Telnet Server proprietary telnet options (eg, set telopt pragma-logon) are currently hidden, and show telopt does not show these options. They were added for Kermit 95 v2.2 (never released) and have likely not been tested since then.

†† Another hidden telnet option, this is for IBMs Secure Attention Key. For use with the \Ktn_sak kverb.