skeuoterm

A real terminal, dressed in Platinum.

skeuoterm runs a real shell over a local PTY and draws it in a strict 1-bit Mac OS 8 surface. The point isn't nostalgia — it's to recover the properties old terminals had: legible state, visible causality, honest latency, reversibility, crispness. This page is a safe sandbox — it drives the real renderer and the real safety guard, but there is no shell behind it. Nothing you type here can run.

try it — sandbox

Click the screen, then type. The fake shell knows help, colors, ls, clear.

The last button shows the guard: a destructive shape is intercepted before it would run, Cancel is the default, and the alert tells you why. It's a reminder, not a guarantee — and it says so.

Scroll the screen (or press ) to enter LOOK; Esc snaps back to LIVE. Click the MODE well in the strip to toggle it too.

the affordances

What you can do, and how to see it

  1. LIVE vs LOOK. LIVE is the bottom, where keys reach the shell and the cursor is a solid block. LOOK is history: the cursor goes hollow, the status strip shows n↑, and nothing you type leaks to the shell until you return.
  2. The status strip never lies. Shell, cwd, mode, size, connection, and the guard state are always shown. A blip rings the liveness dot as bytes land — causality you can see.
  3. The guard. Destructive command shapes (rm -rf, mkfs, git reset --hard, …) raise a modal where the safe choice is default.
  4. Scrollback you can grip. The Platinum gutter shows where you are in history; the thumb's size is how much is on screen. Arrows step, the track pages, the thumb scrubs.
  5. Reliable by design. If the bridge drops, the strip says conn lost and the client reconnects on a backoff — history survives the blip.
  6. Explorable. Open the console: window.skeuoterm is the live app. Provenance (repo, commit, session) is one click away in the real window.
reconciliation — why these choices

Tensions, and how they resolve

Every interesting decision here is a tension held in balance. The design names them so the surface stays honest instead of accidental.

Strict 1-bit · yet colourful programs

Platinum is monochrome; ls --color, prompts and TUIs send colour.

Colour becomes background dither tone — a 17-level Bayer field. Foreground stays ink (bright → bold). Depth without breaking the 1-bit identity.

Real shell · yet safe to mess around

A genuine PTY can do real damage; a fake one teaches nothing.

The backend is a dumb honest pipe; safety lives in the browser, visible, so you see exactly why it stopped you. (This page goes further: no shell at all.)

Snappy echo · yet legible motion

Animation aids comprehension but lag on keystrokes feels broken.

Axiom: never animate input echo; always animate state changes. Modes, scrolling, and the guard ease; your typing never does.

Rich rendering · yet efficient

Per-pixel dither and full repaints waste the browser's time.

Tones are cached patterns; scrollback is a ring buffer; paint is damaged — only changed rows repaint, with a full-frame fail-safe.