MUD / Telnet Client

Mudlark

A terminal-based telnet client with Lisp scripting support, designed for MUD gaming — with TinTin++ compatibility.

#lisp #tintin #c #client #mud #scripting #telnet #terminal

What is Mudlark?

Mudlark is a scriptable MUD and telnet client for the terminal. It implements RFC 854 telnet with NAWS and I/O logging, a readline-style input with history and tab-completion cycling, and a full TUI built on boba. All application logic is written in Ditty Lisp — C is used only for platform bindings.

Lisp-first design

Mudlark's design principle is "Lisp First": never rewrite Lisp in C as an optimization shortcut. The hook system (add-hook, remove-hook, run-hook) is C-level, operating on per-session structs, and handlers are symbols resolved at call time so they respect live rebinding. All sessions share one Lisp environment, but each session keeps its own hook registry.

Features

  • RFC 854 telnet client with NAWS and I/O logging
  • TinTin++ compatibility: #read bridges TinTin++ config into Lisp
  • #write saves scripts as Lisp (.lisp)
  • Aliases, variable expansion, speedwalk, and transform hooks
  • Readline-style input with history and tab-completion cycling
  • Event loop integrated via boba's select()-based runtime
  • --load searches lisp/, lisp/contrib/, and installed paths
  • Emacs tintin-mode with ERT tests

Build & install

Mudlark depends on ditty and boba (both via pkg-config). Install those first, then build standalone:

git clone https://github.com/chestso/mudlark
cd mudlark
./autogen.sh
mkdir -p build && cd build
PKG_CONFIG_PATH=$HOME/.local/lib/pkgconfig:$HOME/.local/lib64/pkgconfig \
  ../configure --prefix=$HOME/.local
make -j"$(nproc)"
make install