Protocols¶
Telix supports Telnet, Websockets, and SSH.
Telnet¶
Telix supports the following relevant RFCs:
RFC 854 Telnet Protocol Specification
RFC 855 Telnet Option Specifications
RFC 856 Telnet Binary Transmission (BINARY)
RFC 857 Telnet Echo Option (ECHO)
RFC 858 Telnet Suppress Go Ahead Option (SGA)
RFC 885 Telnet End of Record Option (EOR)
RFC 1073 Telnet Window Size Option (NAWS)
RFC 1079 Telnet Terminal Speed Option (TSPEED)
RFC 1091 Telnet Terminal-Type Option (TTYPE)
RFC 1572 Telnet Environment Option (NEW_ENVIRON)
RFC 2066 Telnet Charset Option (CHARSET)
Mud¶
The following MUD standards are supported:
MTTS – Mud Terminal Type Standard. Client capability bitvector advertised via TTYPE cycling.
MNES – Mud New Environment Standard. Structured client/server variable exchange over NEW-ENVIRON.
GMCP – Generic MUD Communication Protocol. JSON-based bidirectional messaging for game data.
MSDP – MUD Server Data Protocol. Structured key-value protocol for game variables.
MSSP – MUD Server Status Protocol. Server metadata for MUD crawlers and directories.
MCCP – MUD Client Compression Protocol (v2 and v3). Zlib compression for server-to-client and client-to-server data.
EOR – End of Record. Marks the end of a prompt so the client can distinguish prompts from regular output.
WebSocket¶
Connections use ws:// or wss:// (TLS) URLs. Telix advertises all three
mudstandards.org WebSocket subprotocols during the opening handshake and selects
its engine based on whichever the server accepts:
telnet.mudstandards.org– WebSocket binary frames carry a complete telnet stream including IAC option negotiation. A full telnetlib3 client is used, giving access to all telnet options (NAWS, TTYPE, GMCP, MCCP, etc.) exactly as in a direct Telnet connection.gmcp.mudstandards.org– binary frames carry UTF-8 game output and ANSI control codes; GMCP commands arrive as JSON text frames. ECHO negotiation via sparse IAC sequences is handled transparently.terminal.mudstandards.org– binary frames only; UTF-8 I/O and ANSI control codes with no telnet negotiation and no GMCP text frames.
If the server does not negotiate a recognised subprotocol, or if a bare IAC byte
(0xFF) appears in the first received frame on the GMCP or terminal path, Telix
automatically promotes the connection to the full telnet engine.
The fourth mudstandards.org subprotocol, json.mudstandards.org, is not currently
supported.
SSH¶
Telix uses asyncssh for SSHv2 connections. SSH connections run in
BBS-style raw mode – there is no telnet negotiation. Password and
keyboard-interactive authentication are supported. Connect using the
ssh:// scheme:
telix ssh://bbs.example.com
SSH is suitable for BBS systems that offer SSH alongside Telnet.
SyncTERM Font Switching¶
BBS software can request a bitmap font change using the SyncTERM CTerm font selection sequence:
CSI Ps1 ; Ps2 SP D
where Ps1 is the font slot (0–3) and Ps2 is the font ID (0–44). Telix recognises all 45 SyncTERM fonts:
0 CP437 English, 26 CP437 (thin)
17–18 CP850 Latin I, 19/28 CP865 Norwegian
1/20 CP1251 Cyrillic, 2/12/22 KOI8-R, 9 KOI8-U
3 ISO-8859-2, 4/11/13/23 ISO-8859-4, 14 ISO-8859-5
21 ISO-8859-7, 8 ISO-8859-8, 6 ISO-8859-9, 10/16 ISO-8859-15
24/30 ISO-8859-1, 5/25/27 CP866, 29 CP866U, 31 CP1131
32–33 Commodore 64 (PETSCII), 34–35 Commodore 128
36 Atari (ATASCII), 44 Atari ST
37 P0T NOoDLE, 38 mO’sOul, 39/41 MicroKnight, 40/42 Topaz (Amiga)
43 Prestel
When graphics font rendering is enabled (kitty/sixel), the font switch also selects the corresponding bitmap font for rendering. The wire encoding is updated to match the font’s character set (e.g. switching from CP437 to Topaz changes the encoding to ISO-8859-1).
Without font graphics rendering, the CSI font switch sequence is ignored and text is displayed using the terminal’s current encoding.