🐾 katzensteg V0.1 · ALPHA

Native graphics,
embedded in your terminal.
I heard you like terminal emulators,
so I put emulators in your terminal.
I heard you like terminal emulators,
so I put emulators in your terminal. Meow.

An LD_PRELOAD shim that hooks SDL2, OpenGL, Vulkan and gamescope — and forwards the frames to the kitty graphics protocol. For Linux and Mac.An LD_PRELOAD shim that hooks SDL2, OpenGL, Vulkan and gamescope — and walks them across the bridge into your terminal via the kitty graphics protocol. For Linux and Mac.A purr-loaded shim that catches frames by the scruff — SDL2, OpenGL, Vulkan, gamescope alike — and trots them across the Katzensteg into your terminal via the kitty graphics protocol. For Linux and Mac.

drop in via LD_PRELOAD / DYLD_INSERT_LIBRARIES · input redirection (keyboard + mouse)
01

See it run

Sorted by where in the stack we hook. Pick an API on the left.

Sonic the Hedgehog

RetroArch
Ghostty·macOS

Mega Man X

RetroArch
Kitty·Linux

Monkey Island 2

ScummVM
iTerm2·macOS

OutRun

Cannonball
WezTerm·Linux

The original target. Drawing and frame capture for SDL2 itself — plus the OpenGL and Vulkan contexts the app uses.

02

How it works

Working examples → graphics APIs → katzensteg → kitty graphics protocol → your terminal.

Katzensteg architecture: working examples on the left feed graphics APIs (SDL2, OpenGL, Vulkan), the bridge translates them to kitty graphics protocol, terminal emulators render them.
fig. 01 Working examples → graphics APIs → katzensteg → kitty graphics protocol → your terminal.
03

What it runs

A growing list. Drop in via LD_PRELOAD or DYLD_INSERT_LIBRARIES.

works.txt
What's running todayAlready crossing the bridgeCats already across
  • RetroArch three backends, one frontend
    • 2D · SDL2 Genesis Plus GX (Sonic), snes9x (Mega Man X)
    • OpenGL melonDS (Ridge Racer DS)
    • Vulkan Flycast (Jet Set Radio), Beetle PSX (Spyro)
  • ScummVM Monkey Island 2 et al.
  • Cannonball OutRun engine
  • 0 A.D. standalone SDL2 + OpenGL
  • gamescope (nested) Steam · UE5 · custom engines
  • Moonlight GameStream — Pragmata from CachyOS host
  • Chiaki-ng PS5 Remote Play — Death Stranding 2
  • ffplay plain video — yt-dlp piped into the terminal
  • Input redirect keyboard + mouse straight into the game
tested-on.txt
Tested terminalsTerminals that speak fluent kittyTerminals that purr
  • Kitty reference
  • Ghostty native graphics
  • WezTerm graphics enabled
  • iTerm2 macOS
  • Zellij (fork) graphics in panes — multiple games at once