I wanted to find the absolute floor.
We know that abstractions cost resources, but I wanted to quantify exactly
how much. So, I wrote a fully functional Gopher server in pure i386
assembly with zero dependencies—no libc, no runtime, just raw int 0x80
syscalls.
The result is GASM.

Whacky photo of gasm’s binary size
By manually managing the ELF headers, disabling page alignment, and
using the legacy Linux socketcall interface, the final efficiency
metrics are distinct:
- Binary Size: 1,512 bytes (static, stripped)
- RAM Usage: 24 KB (Verified RSS via pmap)
- Deps: None.
It serves Directory listings (Type 1), Text (Type 0), and Binary (Type 9). It implements bounds checking and traversal blocking manually, without the overhead of a standard library.
Because it targets the original i386 instruction set, it runs natively on everything from a 1985 386DX to a modern Ryzen 9.
It is not a replacement for Nginx. It is a study in how much computer you actually need to serve a file.
The source is available for audit.
Source Code and Download (GitHub)
Original content in gopherspace: gopher://gopher.someodd.zip:70/1/phlog/gasm-tiny-gopher-runs-on-trash.gopher.txt