Doom, Played over Curl

Doom in your terminal: cheers, nitpicks, and 'curl | bash' side‑eye

TLDR: A project lets you play Doom in your terminal by streaming graphics and keystrokes through cURL, no installs beyond curl and bash. Commenters are split between wow and whoa: excitement over a clever template, side‑eye at “curl | bash,” nitpicks about terminology, and spicy claims the README sounds AI‑generated.

Doom just crash‑landed into the command line—again—and the internet is losing its collective mind. A new project streams the 1993 shooter straight into your terminal using cURL (the command‑line tool that fetches web stuff) while the server spits out text‑art frames and reads your keystrokes. No installers, just curl and bash; you can even go full masochist mode with raw terminal settings. It’s a nerd magic trick, and yes, it actually plays. Here’s the nerdy readme.

But the real game is in the comments. One pedant kicked the door in screaming “it’s not ‘cooked’ mode, it’s canonical mode,” branding the write‑up “AI slop.” Another upped the ante, claiming the README basically reads like it was written by a chatbot. Meanwhile, pragmatists are unbothered and thrilled, calling it a solid template for terminal apps you can run remotely—“this is actually usable,” they insist.

Then there’s the ethics committee: the classic “curl | bash” one‑liner is back, and half the crowd is clutching their pearls while the other half is smashing Enter. One joker deadpanned that with the right permissions you could probably run your entire Jira over a curl‑fed script—equal parts nightmare and dream. Purists also quibble over the headline, arguing “played via curl” is a stretch since bash and terminal settings are doing heavy lifting. And of course the eternal meme returns: Doom runs on anything—calculators, pregnancy tests, and now… your cURL output. Press Ctrl+C to quit the thread, because ‘q’ definitely doesn’t work here.

Key Points

  • An HTTP server converts DOOM frames into ANSI half-blocks and streams them to terminals via cURL.
  • Two usage modes: a curl | bash script with a per-keystroke tick loop, and a pure cURL POST that streams keystrokes up and frames down.
  • The pure cURL method uses one HTTP request over a single TCP connection; terminals must be set to raw mode via stty.
  • Default 15 fps mitigates cURL -T - read blocking; FPS is adjustable, and a watch-only mode streams smoothly without -T -.
  • Each session runs a doomgeneric backend, uses command and frame pipes, advances a virtual clock, and downsamples 640×400 BGRA frames to terminal grids.

Hottest takes

"Description reads like AI slop" — fao_
"LLM wrote the thing… obvious that AI help was used" — varun_ch
"good template for terminal apps on remote servers" — thomasfl
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.