A cat lives in your terminal.
ckitty is a C program that draws a procedural cat, one character at a time. The cat below is that same C, compiled to WebAssembly and wired to a real terminal in this page.
The running program
Your keyboard works here too, and the cat re-lays itself out when you resize the window.
Put it in your own terminal
Builds from source with a C compiler and ncurses. macOS and Linux, no runtime, no account.
curl -fsSL https://raw.githubusercontent.com/fortunexbt/ckitty/main/install.sh \
| sh -s -- --prefix "$HOME/.local"
Or build it where it stands:
git clone https://github.com/fortunexbt/ckitty.git
cd ckitty && make && ./ckitty
How the page runs the real thing
One renderer. src/ckitty_core.c composes every frame into a
character grid and never touches a terminal library. The native app and this page
both call it, so the cat you see here is the cat you install.
A shim instead of a rewrite. src/web_curses.c implements the
dozen ncurses calls that src/ckitty.c makes, flushes the grid as ANSI,
and hands getch() to the browser event loop. Nothing was ported to
JavaScript, and the native build still links real ncurses.
Frames you can diff. ckitty --dump --seed 123 sit --frame 0
prints the same art every run. The test suite leans on that, and so does the
banner in the README.