meow-meow.io
← all projects

terminal workstation · prototype

tnwr

A text workstation where the renderer does not need to know what a tokeniser or sampler is. Small independent nodes provide panes, and the window makes their structure visible.

Early windowed GPU prototype · source published · Linux development

Schematic of tnwr displaying two tokenized panes from an independent 9P node, with changed spans highlighted.
Architecture sketch: the renderer reads a node's body, token spans and divergence ranges. This is a schematic, not a captured application screenshot.

Make the boundary visible

Most text interfaces hide the machinery that shaped the text. tnwr puts that machinery next to the words. A node exposes a small 9P namespace; the renderer asks for a view, reads the body and span ranges, then draws two versions so the exact change stays legible.

Forking a node gives each side its own state. Change a tokenizer or a sampling setting and inspect the consequences in context. The renderer stays unaware of which backend produced the pane.

What is here now

The repository contains a Rust windowed renderer, a 9P client, and Python token, graph and sampler nodes. The simple tokenizer is deliberately lightweight: it demonstrates boundaries but uses hash-derived IDs, not a learned vocabulary. Real IDs require the GGUF or Hugging Face backend. The sampler can expose candidate-token changes for a local GGUF model through llama.cpp.

This is not a finished desktop environment or an operating system. The project currently uses winit and wgpu in a normal window. A DRM/KMS console backend is future work.

Try the prototype

Install Rust and Python 3, start nodes/tok_node.py, then run cargo run -- 127.0.0.1:5640. The repository README describes optional tokenizer and sampler dependencies. No model weights are included.

The useful question is whether seeing boundaries and divergence side by side helps you predict what a change will do, before the interface explains it.