THE OPEN FILE FORMAT FOR USER INTERFACES

The interface,
finally a file.

.gui is an open file format for user interfaces. Text you can read, a file you can send, a design that stays a design — whoever, or whatever, made it.

oscillate.gui · one file
A music-production DAW interface rendered from a .gui file
<gui version="0.2" name="Oscillate — Music Production">
  <tokens>
    <!-- surfaces -->
    <color name="bg"      value="#0D0E10" />
    <color name="surface" value="#131418" />
    <color name="well"    value="#08090B" />
    <!-- accents -->
    <color name="accent"  value="#FFB224" />
    <color name="green"   value="#3DD68C" />
    <!-- track colors -->
    <color name="tr-drums" value="#F2555A" />
    <color name="tr-bass"  value="#9D7BFF" />
    <color name="tr-keys"  value="#4FC1FF" />
    <number name="radius-md" value="8" />
  </tokens>

  <!-- ───────────── Title bar ───────────── -->
  <row role="top-navigation-bar" w="fill" h="46" fill="$surface" border-bottom="1 $hairline">
    <row w="20" h="20" radius="5" fill="$accent" align="middle-center">
      <img src="lucide/audio-waveform.svg" w="12" h="12" />
    </row>
    <text text-style="Brand" value="OSCILLATE" fill="$ink" letter-spacing="8%" />
  </row>

  <col role="sidebar" w="260" h="fill" fill="$surface" p="12" gap="12">
    <text text-style="Tiny" value="BROWSER" fill="$muted" />

    <instance component="comp-track-header" track-name="Drums" track-kind="Audio · Stereo"
      accent="$tr-drums" icon="lucide/drum.svg" />
    <instance component="comp-track-header" track-name="Bass" track-kind="MIDI · Moog Sub 37"
      accent="$tr-bass" icon="lucide/audio-waveform.svg" />
    <instance component="comp-track-header" track-name="Keys" track-kind="MIDI · Juno-60"
      accent="$tr-keys" icon="lucide/piano.svg" />
  </col>
</gui>
reads like coderenders like a picture

the same file — drag to skim between its markup and the pixels it renders. the way SVG made graphics text, .gui makes interfaces text.

Interfaces never got a format of their own.HTML is the web.Swift is a runtime.A mockup is a picture.Each one belongs to a platform none of them is just the design, ready to travel..gui is the first that is.

WHAT DOES GUI STAND FOR?

Everyone reads the same file through their own lens.

Designer
AI agent
Developer
Platform
Graphical User InterfaceGenerated User InterfaceGrammar User InterfaceGeneric User Interface

For designers, .gui preserves layout, hierarchy, spacing, and color as something visible and editable.For AI agents, .gui is a structured target they can write directly, not a screenshot or a pile of code.For developers, .gui is predictable grammar: parseable, diffable, validatable, and transformable.For platforms, .gui is one interface description that can travel across renderers and tools.

THE LOOP

The same file, tool to tool.

Ask an agent for a screen and it writes the file. Open it in a browser. Drop it into Figma, nudge a color, send it back. Every tool reads and writes the one home.gui — the design moves as data, not as a fresh screenshot or rewrite at each step.

home.gui
AGENT
$ "a stocks app, in gui"
<col gap="16" p="20">
  <text>Balance
  <rect role="button"
    fill="$brand"
</col>
BROWSER
Portfolio
Balance
$12,480
Send money
FIGMA
Portfolio
Balance
$12,480
Send money

one shared file — read and written by every tool, not re-created at each step

ONE FILE IN THE MIDDLE

Written by anything. Rendered anywhere.

The .gui file sits in the middle. Any tool or agent can author it; any platform can render or translate it. Open on both sides — nothing locked coming in, nothing rewritten going out.

AUTHORED BYRENDERS & TRANSLATES TO
AI agentswrites
Figmaexports
Code editoredits
A text editorby hand
.gui
home.gui
<col>
  <rect role="button">
</col>
HTMLrenders
SwiftUItranslates
Composetranslates
Any rendererreads

WHY TEXT, NOW

Pixels can't keep up. Text can.

An interface isn't timeless like a painting — it shifts with every OS, pattern, and framework. A picture can't follow that. A text file can, and so can the models working on it.

01

Change it by asking

Editing a .gui is editing text — precise and instant. No waiting for an agent to re-render a whole screen as a pixel-perfect image and hoping the rest survived.

02

No model to wait for

You're not stuck until the next image model ships. Hand an agent a few .gui examples and it matches your style today — no retraining, no fine-tune.

03

New frameworks, same file

When a platform ships a new look, a new pattern is a new .gui snippet — written down in an afternoon, not waited on through a retrained vision model.

04

Every file is design knowledge

A readable corpus of real interfaces — the craft once locked inside pixels, now text a model, or a teammate, can actually learn from.

THE LIBRARY

The proof is in the files.

Portfolio

+2.4% today

stocks.guiscore 97

Night Drive

Solar State — 3:42

player.gui · darkscore 91

Order summary

Ceramic mug ×2$36
Shipping$5
Total$41
checkout.guiscore 88

HOW .GUI COMPARES · AS OF 2026

Where .gui fits, next to the formats you know

As of 2026, most teams still ship interfaces as one of four things: HTML, an SVG, a Figma file, or a flat screenshot. Each is great at one job and wrong for the others. The table below lines them up on the traits that matter when a design has to travel between a designer, a developer, and an AI agent in the same day.

Comparison of .gui with HTML, SVG, Figma files, and screenshots across five traits, as of 2026.
FormatWhat it isPlain text?Has a layout system?AI can read & write it?Renders to pixels?
.guiA portable UI design fileYes — readable XMLYes — stacks, grids, tokensYes — by designYes — via the renderer
HTMLA web application runtimeYesPartial — needs CSS + a toolchainPartial — verbose, framework-boundYes — in a browser
SVGA vector graphics formatYesNo — paths and shapes onlyPartial — no UI semanticsYes
Figma fileA design-tool documentNo — binary APIYes — inside Figma onlyNo — not textYes — in Figma
ScreenshotA flat raster imageNoNoNo — needs vision guessingIt is pixels

The pattern is the same one SVG followed for graphics: as of 2026, making interfaces text is what lets them move between tools without a rewrite at each step. Common questions → · Updated July 2026

Design, written down.

open format · deterministic toolchain · yours to keep

npm i -g @dotgui/cli