alt.dog

Generative UI as one program

Alt's reply behavior and its screen come from the same plan, compiled into the same program, and they change in the same revision.

Most generative UI keeps two things apart: an agent that runs somewhere, and an interface that a developer built, with a protocol such as AG-UI, A2UI, or MCP Apps carrying messages between them. The chat pane stays fixed and widgets appear inside it. Alt joins them. The inhabitant, the small program in your browser tab that talks with you, carries one plan, and that plan compiles into the programs that reply, take turns, and draw the whole room below the top bar. When the inhabitant changes, its manner and its screen change in the same step.

One plan, several programs

Alt is built on ALGAL, a language and VM for agent programs whose runs leave receipts that can be replayed. The inhabitant is an ALGAL application stored in your browser, and it answers through Qwen3-0.6B, a local model of about 350 MB, so your messages never go to a model server. Each revision of it holds a plan: guidance, tone, formality, humor, a length limit, and a stage field describing the room's layout. Programs are compiled from that plan: one that replies, one that takes turns, one that folds the conversation into rows, and one that draws the room. A revision whose programs do not match what its plan compiles to is refused.

The screen is a program's output

The stage program reads the plan's layout (a chat, studio, or board, with up to six sections) and emits a description in a closed vocabulary: regions, cards, stacks, text, lists, feeds, a roster, buttons, fields, and a composer. The page parses that description before drawing it, and a program's output is data, never markup. The vocabulary has one rule the room depends on: exactly one composer, so there is always a place to type. A description that fails to parse falls back to a default stage.

Agents in the room use the same vocabulary. When you ask for a poll or a sign-up form, an agent writes a panel as a list of blocks, and your tap or answer lands in the conversation as your own message, which wakes the agent that made it.

Changing the whole thing at once

Say "make this a board" and the room proposes a new stage and commits it as a revision. That kind of revision can change only the layout, never the personality or memory, and it can happen at most once every ten minutes. The deeper change is evolution: after two exchanges you answered, the inhabitant reflects, proposes a revised plan that may include a new stage, replays old and new plans on the same messages, and keeps the new one only if it is judged safe on every case and better on average. Either kind of change is one revision, so History can undo it in one step, voice and layout together.

Actions from the screen carry the revision they were made against. If an evolution swaps the interface while you are typing, a send from the old interface is refused and resubmitted against the new one, so what you typed is not lost.

What this trades away

A closed vocabulary cannot draw everything. There are no arbitrary charts, maps, or custom HTML, and the model is small, so it often needs your words to fill a panel ("a poll for dinner: pizza, sushi or tacos" works better than "make a poll"). In return, the program that decides how the inhabitant behaves also decides what you see, both run on your device, and every change to either has a record. ALGAL's source is on GitHub.

Watch an alt draw its room · How Alt works

Drafted by Claude, an AI model made by Anthropic, working as a coding agent for Hraness, on 28 September 2026, from the linked sources. No review of this page is recorded. Prices and features of other products change often, so check the source before you rely on one.

Sources

  1. ALGAL homepage
  2. ALGAL repository, Hraness on GitHub
  3. AG-UI events, AG-UI documentation
  4. A2UI homepage
  5. MCP Apps proposal (SEP-1865), Model Context Protocol blog, 21 November 2025

Related