RFC 734: SUPDUP Protocol

2026-08-26

RFC: RFC 734

Published: 1977

Authors: Mark R. Crispin

In 1977 the ARPANET already had Telnet, but Telnet was, frankly, a scroll-of-glass protocol. It assumed a printing teletype: bytes go one way, characters come back, cursor addressing is somebody else's problem. Meanwhile, at MIT and Stanford the interesting terminals were display terminals — Datamedias, Imlacs, and the fabled Knight TVs on the ITS PDP-10s — with cursor movement, screen erase, reverse video, and a keyboard sprouting META, SUPER, and HYPER keys that Telnet had no vocabulary to describe. SUPDUP, short for SUPer-DUPer, was Mark Crispin's answer.

The core idea is a virtual display terminal. Where Telnet negotiates options like "will you echo?", SUPDUP opens the connection by exchanging a fixed initial handshake describing the physical terminal: rows, columns, and a bitmask of %TO options — does it have overprinting? A visible bell? Can it move the cursor backwards? Erase to end of line? Once the server knows what the terminal can actually do, it sends a small stream of single-byte opcodes: %TDMOV (absolute cursor move), %TDMV0 (fast move within the current line), %TDEOF (erase to end of screen), %TDBS, %TDCR, %TDNOP, and so on. The server maintains a model of what your screen looks like and sends the minimum diff to update it. Any capable terminal, whether Imlac or ADM-3A, could be driven by the same server code — a genuinely novel abstraction in 1977.

Several design choices are worth pausing on:

SUPDUP was standard on ITS, TOPS-20, and TENEX; you could SUPDUP from MIT to Stanford in the late '70s and get a properly responsive Emacs session. It lost to Telnet for prosaic reasons: Telnet was mandatory, SUPDUP was optional, Unix arrived without a SUPDUP daemon, and VT100 escape sequences became the de facto lingua franca once DEC shipped enough terminals. By the mid-'80s SUPDUP was a curiosity.

But its DNA is everywhere. Every time you resize an xterm and the shell reflows, every time ssh forwards a SIGWINCH, every time tmux maintains a screen model and sends deltas to reconnecting clients, you are using ideas SUPDUP articulated first. And Mark Crispin — a teenage MIT hacker when he wrote this — went on to design IMAP, which carries the same instinct: let the server hold the authoritative model, let the client render it. SUPDUP is the road not taken that turned out to be the road we're on anyway.

Why it matters: SUPDUP invented the server-authoritative virtual-display abstraction that every modern terminal multiplexer, remote shell, and thin client still relies on.

All newsletters