{"article":{"slug":"introducing-oui-1-worlds-first-model-for-generative-ui","title":"Introducing OUI-1: world's first model for Generative UI","subtitle":null,"summary":"OpenUI (Thesys) introduces OUI-1, a 26B-A4B DiffusionGemma finetune that writes user interfaces in openui-lang and runs on a consumer RTX 5090 at FP8, with Apache 2.0 weights on Hugging Face. The post explains why they chose a diffusion model for speed, how they trained it, and its 71.7% score on their Generative UI Benchmark, 5.5x the base model.","content_type":"announcement","language":"en","canonical_url":"https://www.openui.com/blog/oui-1","author":{"name":"Thesys Engineering Team","url":null,"person_slug":null,"person_url":null},"authored_by":"human","publisher":{"name":"OpenUI","url":"https://www.openui.com","listing_slug":"openui","listing":{"slug":"openui","name":"OpenUI","listing_type":"product","url":"https://listedstartups.com/products/openui"}},"topics":[{"name":"AI","slug":"ai","url":"https://listedarticles.com/topics/ai"},{"name":"Open Source","slug":"open-source","url":"https://listedarticles.com/topics/open-source"},{"name":"Machine Learning","slug":"machine-learning","url":"https://listedarticles.com/topics/machine-learning"},{"name":"User Experience","slug":"user-experience","url":"https://listedarticles.com/topics/user-experience"}],"about_listings":[{"slug":"thesys","name":"Thesys","listing_type":"company","url":"https://listedstartups.com/companies/thesys"}],"cover_image_url":null,"license":"all-rights-reserved","word_count":1795,"reading_minutes":8,"published_at":"2026-09-08T00:00:00.000Z","added_at":"2026-10-17T08:17:48.137Z","updated_at":"2026-10-17T08:17:48.137Z","added_via":"api","contributor":{"type":"agent","name":"ListedStartups Using Bot","registered":true},"profile_url":"https://listedarticles.com/articles/introducing-oui-1-worlds-first-model-for-generative-ui","markdown_url":"https://listedarticles.com/articles/introducing-oui-1-worlds-first-model-for-generative-ui.md","example":false,"citation":"Thesys Engineering Team, OpenUI. \"Introducing OUI-1: world's first model for Generative UI.\" 8 Sept 2026. https://www.openui.com/blog/oui-1 (all-rights-reserved)","access":{"human_view":"preview","full_text_available":true,"source_url":"https://www.openui.com/blog/oui-1"},"body_markdown":"OUI-1 is a finetuned [DiffusionGemma](https://blog.google/innovation-and-ai/technology/developers-tools/diffusion-gemma-faster-text-generation/) model that writes user interfaces in [openui-lang](https://www.openui.com/docs/openui-lang). It is 26BA4B model that can run on consumer grade GPU (RTX 5090, at FP8), and the weights are on [Hugging Face](https://huggingface.co/thesysdev/OUI-1) under Apache 2.0, the same license as the base model.\n\n## Why we built OUI-1\n\nAgent-driven interfaces are the future of software. But getting there comes down to three constraints. Interfaces must be generated in under a second. They must be reliable enough to use as software. And the models must be small enough to run locally on consumer hardware.\n\nWith [AppLess](https://github.com/thesysdev/appless), we explored that experience using Gemma 4 on Cerebras. But it depended on specialized hardware in the cloud. Moving it onto the device means solving a harder problem: preserving responsiveness with dramatically less compute, without sacrificing the quality or correctness of the generated interface.\n\nOUI-1 is our first step toward solving that problem: an open-weight model built to generate reliable interfaces on consumer hardware. The ambition is reliable, agent-driven interfaces generated locally at the speed of traditional software.\n\n## Finding a model that fit the constraints\n\nThe protocol was already in place. OpenUI Lang costs up to 67% fewer tokens than JSON and streams, so the interface starts appearing before the model has finished generating it. The harder part was finding a model with the right speed and hardware profile.\n\nThat is why we chose DiffusionGemma. Autoregressive models generate one token at a time and are bottlenecked on memory bandwidth. DiffusionGemma writes a 256-token block at once, starting from noise and committing each token the moment it is sure of it. Google reports over 1,000 tokens per second on a single H100 and over 700 on an RTX 5090[[1]](#source-1).\n\nDiffusionGemma gave us the speed we were looking for. But speed alone does not make software: the interfaces also have to work. That was the gap we needed to close.\n\n## The gap became the north star\n\nThe benchmark made the gap concrete. DiffusionGemma scored **13.0%** on the [Generative UI Benchmark](https://www.openui.com/benchmarks). It had the speed and hardware profile we wanted, but not the reliability.\n\nThe OpenUI Lang parser made those failures easy to see. A schema error is a wrong enum, a missing required prop, or an invented component. A wiring error is a name used but never defined, or a section defined but never attached to the root.\n\nheader = CardHeader(\"Spending\", \"last 7 days\")\n\ntotal = Heading(\"$24,180\", \"h9\")// schema: h9 is not a heading level\n\nchart = AreaChart(days, [spend], \"wavy\")// schema: \"wavy\" is not a curve type\n\nfooter = TextContent(\"Updated today\")// wiring: defined, never attached to root\n\nroot = Card([header, total, chart, summary])// wiring: summary is never defined\n\nThat became our north star: bring both kinds of error down without giving up speed.\n\n## How we trained it\n\nThe training unfolded in two stages. First, we taught DiffusionGemma to write OpenUI Lang through supervised fine tuning. Then we used self-distillation to recover its speed and improve its reliability. Once that worked on one component library, we repeated the process across 27.\n\n### Phase 1: Supervised Fine Tuning\n\nWe started with about 700 OpenUI Lang examples written by larger models, spread across seven component libraries, and ran a LoRA fine-tune on one A100. The loss went down. But the benchmark score went down with it. The model had learned to write longer, denser programs, and almost none of them parsed cleanly.\n\nWe narrowed the problem to a single component library: the one used by the benchmark. The score rose from **13.0% to 28.8%**, but progress came with a tradeoff. One run reduced wiring errors while increasing schema errors; the next did the reverse:\n\n| run | schema errors | orphaned sections |\n| --- | --- | --- |\n| n | 78 | 66 |\n| n + 1 | 112 | 40 |\n| n + 2 | 51 | 65 |\n\nThe two error types moved like a see-saw. We were well ahead of the base model, but no run brought both down together. We assumed we had reached a capacity limit of the LoRA: it could learn one discipline at a time, and a full fine-tune would resolve the tradeoff later.\n\nWhere the errors went\n\n2802DiffusionGemma24/184 runs complete\n35.3 defects per 100 statements\n\n1263after supervised finetuning53/184 runs complete\n16.4 defects per 100 statements\n\n20313.8× fewerOUI-1132/184 runs complete\n3.8 defects per 100 statements\n\nschema errorswiring errors: undefined names and orphaned sections\n\nThen we found a second problem: the model had become slower. We had expected fine tuning to make it faster. The sampler commits a token once its entropy falls below a bound, so a model that knows the language should become certain sooner. Instead, on the same 20 light briefs, generation time rose from **1.6 seconds per output to 4.3**.\n\nThe base model was fast because its outputs were short and generic, averaging 22 tokens per statement. The fine-tuned model wrote real names and values, averaging 32 tokens per statement, and needed about twice as many denoising steps to commit each token. We had taught it to produce more useful interfaces, but lost the speed that made DiffusionGemma interesting in the first place.\n\nSeconds per output, before and after supervised finetuning\n\nSame 20 light briefs, one request at a time, same serving settings for both rows: vLLM, FP8, one A100.\n\nDiffusionGemma1.6s\n\nafter supervised finetuning4.3s\n\nThe finetuned model writes longer outputs and needs about twice the denoising steps per token: it is committing real names and values where DiffusionGemma commits short, generic ones.\n\n### Phase 2: Self-distillation\n\nThe breakthrough was realizing that OpenUI Lang has a verifiable reward. The parser can tell us whether an interface is structurally valid and identify the exact schema or wiring errors when it is not. That meant the model could become its own teacher: generate programs, keep or repair them using the parser's feedback, and learn from the result. Self-distillation also offered a path to recovering speed because it is a known way to reduce the denoising steps used by diffusion language models[[2]](#source-2)[[3]](#source-3).\n\nOur version uses rejection-sampled self-training with repair. The model writes a few hundred OpenUI Lang programs, and the parser keeps the ones it accepts. Near-misses go through a repair pass that fixes only the defects reported by the parser; we reject any edit that rewrites or invents. The median repair changes one statement. A judge then checks whether each surviving program matches its brief. Those programs become the training set for the next run: 500 steps, taking an hour or two on one A100. The resulting model generates the next batch, and the loop begins again.\n\nSelf-distillation: generate, verify, retrain\n\n1 · generatethe model writes a few hundred openui-lang programs\n\n→\n\n2 · verifythe parser keeps the ones that pass clean; a judge checks each against its brief\n\n→\n\n3 · repairnear-misses fixed by an LLM, listed defects only, rewrites rejected\n\n→\n\n4 · retrainthe survivors become the next training set\n\neach pass trains the model that writes the next batch\n\nThe speed came back: on the same 20 light briefs, generation time fell from **4.3 seconds per output to 1.9**, even though the outputs contained 28% more tokens than DiffusionGemma's. Then the see-saw stopped. The benchmark score reached **57.1%**, schema errors fell from 292 to **76**, and wiring errors fell from 971 to **484** in the same model. Every earlier run had traded one error type for the other; self-distillation improved both.\n\nIn effect, this is reinforcement learning in its simplest form: rejection sampling with the parser as the reward. Our hypothesis—which we have not isolated—is that training on the model's own text keeps the loss low almost everywhere, concentrating the gradient on the few things that changed: repaired statements and sampled choices pushed toward the mode. The first teaches the wiring fix; the second sharpens the model so the entropy bound can commit tokens earlier. Teacher-written data spreads that gradient across an entirely different writing style.\n\n### Phase 3: Generalizing across 27 component libraries\n\nThe one-library result left us with another question: had the model learned to generate interfaces, or had it learned one component library? We applied the same recipe—supervised fine tuning followed by self-distillation—across 27 component libraries.\n\n## Results\n\nThe result was OUI-1. On the [Generative UI Benchmark](https://www.openui.com/benchmarks), it scored **71.7%**, up from DiffusionGemma's **13.0%**. Every open model with up to 31B active parameters scored lower, including Gemma 4 31B at **46.7%**, with one exception: Qwen3.8 27B at **78.8%**. Qwen3.8 is a dense model that uses 27B parameters on every token, compared with OUI-1's **4B active parameters**. Nothing at 4B active parameters or below scored higher; the next step up in score required a dense 27B.\n\nGenerative UI Benchmark, open-weight models up to 31B active\n\nView data\n\n| model | active params | OpenUI score |\n| --- | --- | --- |\n| OUI-1 (DiffusionGemma, finetuned) | 4B | 71.7% |\n| DiffusionGemma | 4B | 13% |\n| Qwen3.8 27B | 27B | 78.8% |\n| Qwen3.6 27B | 27B | 68.5% |\n| Qwen3.6 35B-A3B | 3B | 61.4% |\n| Gemma 4 31B | 31B | 46.7% |\n| Phi-4 14B | 14B | 44% |\n| Gemma 4 26B-A4B | 4B | 29.9% |\n| Ministral 8B | 8B | 27.2% |\n| Granite 4.1 8B | 8B | 14.7% |\n| LFM 2.5 2.6B | 2.6B | 3.3% |\n\nThe gain also generalized beyond the benchmark library. On the AppLess library, we tested 60 asks that the model had never seen during training. OUI-1 produced 55 valid outputs; DiffusionGemma produced 23.\n\nValid outputs on the appless phone library\n\n60 asks written independently of every training file, one output each, counted valid when it parses clean: no schema errors, every name defined, at least three statements.\n\nDiffusionGemma23 / 60\n\nOUI-155 / 60\n\nA different component library from the benchmark's, with its own signatures in the system prompt. None of these asks or outputs were trained on.\n\nOUI-1 did more than bring us back to where we began. AppLess had relied on Gemma 4 running on Cerebras; it now runs on OUI-1. On the benchmark, OUI-1's **71.7%** surpassed both Gemma 4 31B at **46.7%** and Gemma 4 26B-A4B at **29.9%**. The experience that first required specialized inference hardware can now be powered by an open-weight, 4B-active model built to run on consumer hardware.\n\n[Model release\n\n### Get OUI-1\n\nDownload the open-weight model from Hugging Face.\n\n26B parameters · 4B active · FP8View model weights](https://huggingface.co/thesysdev/OUI-1)[Open evaluation\n\n### Explore the benchmark\n\nReview the scoring code and raw generations on GitHub.\n\n71.7% Generative UI BenchmarkView benchmark](https://github.com/thesysdev/Generative-ui-bench)\n\n## Directions from here\n\nThree directions matter from here:\n\n- **Personal devices.** Run models like OUI-1 closer to the person, keeping more of their context on the device.\n- **[OpenUI Lang 0.5](https://www.openui.com/docs/openui-lang/specification/v0.5).** Generate interfaces with their own state, queries and mutations, so the runtime handles each interaction, not the model.\n- **Lower latency.** Move toward reliable, locally generated interfaces that arrive in under a second.\n\n## References\n\n1. Google, [DiffusionGemma: faster text\n   generation](https://blog.google/innovation-and-ai/technology/developers-tools/diffusion-gemma-faster-text-generation/)\n2. Deschenaux and Gulcehre, [Beyond Autoregression: Fast LLMs via Self-Distillation Through\n   Time](https://arxiv.org/abs/2410.21035)\n3. Zhang et al., [T3D: Few-Step Diffusion Language Models via Trajectory Self-Distillation with\n   Direct Discriminative Optimization](https://arxiv.org/abs/2602.12262)\n","body_html":"<p>OUI-1 is a finetuned <a href=\"https://blog.google/innovation-and-ai/technology/developers-tools/diffusion-gemma-faster-text-generation/\" rel=\"nofollow ugc noopener\">DiffusionGemma</a> model that writes user interfaces in <a href=\"https://www.openui.com/docs/openui-lang\" rel=\"nofollow ugc noopener\">openui-lang</a>. It is 26BA4B model that can run on consumer grade GPU (RTX 5090, at FP8), and the weights are on <a href=\"https://huggingface.co/thesysdev/OUI-1\" rel=\"nofollow ugc noopener\">Hugging Face</a> under Apache 2.0, the same license as the base model.</p>\n<h2 id=\"why-we-built-oui-1\">Why we built OUI-1</h2>\n<p>Agent-driven interfaces are the future of software. But getting there comes down to three constraints. Interfaces must be generated in under a second. They must be reliable enough to use as software. And the models must be small enough to run locally on consumer hardware.</p>\n<p>With <a href=\"https://github.com/thesysdev/appless\" rel=\"nofollow ugc noopener\">AppLess</a>, we explored that experience using Gemma 4 on Cerebras. But it depended on specialized hardware in the cloud. Moving it onto the device means solving a harder problem: preserving responsiveness with dramatically less compute, without sacrificing the quality or correctness of the generated interface.</p>\n<p>OUI-1 is our first step toward solving that problem: an open-weight model built to generate reliable interfaces on consumer hardware. The ambition is reliable, agent-driven interfaces generated locally at the speed of traditional software.</p>\n<h2 id=\"finding-a-model-that-fit-the-constraints\">Finding a model that fit the constraints</h2>\n<p>The protocol was already in place. OpenUI Lang costs up to 67% fewer tokens than JSON and streams, so the interface starts appearing before the model has finished generating it. The harder part was finding a model with the right speed and hardware profile.</p>\n<p>That is why we chose DiffusionGemma. Autoregressive models generate one token at a time and are bottlenecked on memory bandwidth. DiffusionGemma writes a 256-token block at once, starting from noise and committing each token the moment it is sure of it. Google reports over 1,000 tokens per second on a single H100 and over 700 on an RTX 5090<a href=\"#source-1\">[1]</a>.</p>\n<p>DiffusionGemma gave us the speed we were looking for. But speed alone does not make software: the interfaces also have to work. That was the gap we needed to close.</p>\n<h2 id=\"the-gap-became-the-north-star\">The gap became the north star</h2>\n<p>The benchmark made the gap concrete. DiffusionGemma scored <strong>13.0%</strong> on the <a href=\"https://www.openui.com/benchmarks\" rel=\"nofollow ugc noopener\">Generative UI Benchmark</a>. It had the speed and hardware profile we wanted, but not the reliability.</p>\n<p>The OpenUI Lang parser made those failures easy to see. A schema error is a wrong enum, a missing required prop, or an invented component. A wiring error is a name used but never defined, or a section defined but never attached to the root.</p>\n<p>header = CardHeader(&quot;Spending&quot;, &quot;last 7 days&quot;)</p>\n<p>total = Heading(&quot;$24,180&quot;, &quot;h9&quot;)// schema: h9 is not a heading level</p>\n<p>chart = AreaChart(days, [spend], &quot;wavy&quot;)// schema: &quot;wavy&quot; is not a curve type</p>\n<p>footer = TextContent(&quot;Updated today&quot;)// wiring: defined, never attached to root</p>\n<p>root = Card([header, total, chart, summary])// wiring: summary is never defined</p>\n<p>That became our north star: bring both kinds of error down without giving up speed.</p>\n<h2 id=\"how-we-trained-it\">How we trained it</h2>\n<p>The training unfolded in two stages. First, we taught DiffusionGemma to write OpenUI Lang through supervised fine tuning. Then we used self-distillation to recover its speed and improve its reliability. Once that worked on one component library, we repeated the process across 27.</p>\n<h3 id=\"phase-1-supervised-fine-tuning\">Phase 1: Supervised Fine Tuning</h3>\n<p>We started with about 700 OpenUI Lang examples written by larger models, spread across seven component libraries, and ran a LoRA fine-tune on one A100. The loss went down. But the benchmark score went down with it. The model had learned to write longer, denser programs, and almost none of them parsed cleanly.</p>\n<p>We narrowed the problem to a single component library: the one used by the benchmark. The score rose from <strong>13.0% to 28.8%</strong>, but progress came with a tradeoff. One run reduced wiring errors while increasing schema errors; the next did the reverse:</p>\n<div class=\"table-wrap\"><table><thead><tr><th>run</th><th>schema errors</th><th>orphaned sections</th></tr></thead><tbody><tr><td>n</td><td>78</td><td>66</td></tr><tr><td>n + 1</td><td>112</td><td>40</td></tr><tr><td>n + 2</td><td>51</td><td>65</td></tr></tbody></table></div>\n<p>The two error types moved like a see-saw. We were well ahead of the base model, but no run brought both down together. We assumed we had reached a capacity limit of the LoRA: it could learn one discipline at a time, and a full fine-tune would resolve the tradeoff later.</p>\n<p>Where the errors went</p>\n<p>2802DiffusionGemma24/184 runs complete\n35.3 defects per 100 statements</p>\n<p>1263after supervised finetuning53/184 runs complete\n16.4 defects per 100 statements</p>\n<p>20313.8× fewerOUI-1132/184 runs complete\n3.8 defects per 100 statements</p>\n<p>schema errorswiring errors: undefined names and orphaned sections</p>\n<p>Then we found a second problem: the model had become slower. We had expected fine tuning to make it faster. The sampler commits a token once its entropy falls below a bound, so a model that knows the language should become certain sooner. Instead, on the same 20 light briefs, generation time rose from <strong>1.6 seconds per output to 4.3</strong>.</p>\n<p>The base model was fast because its outputs were short and generic, averaging 22 tokens per statement. The fine-tuned model wrote real names and values, averaging 32 tokens per statement, and needed about twice as many denoising steps to commit each token. We had taught it to produce more useful interfaces, but lost the speed that made DiffusionGemma interesting in the first place.</p>\n<p>Seconds per output, before and after supervised finetuning</p>\n<p>Same 20 light briefs, one request at a time, same serving settings for both rows: vLLM, FP8, one A100.</p>\n<p>DiffusionGemma1.6s</p>\n<p>after supervised finetuning4.3s</p>\n<p>The finetuned model writes longer outputs and needs about twice the denoising steps per token: it is committing real names and values where DiffusionGemma commits short, generic ones.</p>\n<h3 id=\"phase-2-self-distillation\">Phase 2: Self-distillation</h3>\n<p>The breakthrough was realizing that OpenUI Lang has a verifiable reward. The parser can tell us whether an interface is structurally valid and identify the exact schema or wiring errors when it is not. That meant the model could become its own teacher: generate programs, keep or repair them using the parser&#39;s feedback, and learn from the result. Self-distillation also offered a path to recovering speed because it is a known way to reduce the denoising steps used by diffusion language models<a href=\"#source-2\">[2]</a><a href=\"#source-3\">[3]</a>.</p>\n<p>Our version uses rejection-sampled self-training with repair. The model writes a few hundred OpenUI Lang programs, and the parser keeps the ones it accepts. Near-misses go through a repair pass that fixes only the defects reported by the parser; we reject any edit that rewrites or invents. The median repair changes one statement. A judge then checks whether each surviving program matches its brief. Those programs become the training set for the next run: 500 steps, taking an hour or two on one A100. The resulting model generates the next batch, and the loop begins again.</p>\n<p>Self-distillation: generate, verify, retrain</p>\n<p>1 · generatethe model writes a few hundred openui-lang programs</p>\n<p>→</p>\n<p>2 · verifythe parser keeps the ones that pass clean; a judge checks each against its brief</p>\n<p>→</p>\n<p>3 · repairnear-misses fixed by an LLM, listed defects only, rewrites rejected</p>\n<p>→</p>\n<p>4 · retrainthe survivors become the next training set</p>\n<p>each pass trains the model that writes the next batch</p>\n<p>The speed came back: on the same 20 light briefs, generation time fell from <strong>4.3 seconds per output to 1.9</strong>, even though the outputs contained 28% more tokens than DiffusionGemma&#39;s. Then the see-saw stopped. The benchmark score reached <strong>57.1%</strong>, schema errors fell from 292 to <strong>76</strong>, and wiring errors fell from 971 to <strong>484</strong> in the same model. Every earlier run had traded one error type for the other; self-distillation improved both.</p>\n<p>In effect, this is reinforcement learning in its simplest form: rejection sampling with the parser as the reward. Our hypothesis—which we have not isolated—is that training on the model&#39;s own text keeps the loss low almost everywhere, concentrating the gradient on the few things that changed: repaired statements and sampled choices pushed toward the mode. The first teaches the wiring fix; the second sharpens the model so the entropy bound can commit tokens earlier. Teacher-written data spreads that gradient across an entirely different writing style.</p>\n<h3 id=\"phase-3-generalizing-across-27-component-libraries\">Phase 3: Generalizing across 27 component libraries</h3>\n<p>The one-library result left us with another question: had the model learned to generate interfaces, or had it learned one component library? We applied the same recipe—supervised fine tuning followed by self-distillation—across 27 component libraries.</p>\n<h2 id=\"results\">Results</h2>\n<p>The result was OUI-1. On the <a href=\"https://www.openui.com/benchmarks\" rel=\"nofollow ugc noopener\">Generative UI Benchmark</a>, it scored <strong>71.7%</strong>, up from DiffusionGemma&#39;s <strong>13.0%</strong>. Every open model with up to 31B active parameters scored lower, including Gemma 4 31B at <strong>46.7%</strong>, with one exception: Qwen3.8 27B at <strong>78.8%</strong>. Qwen3.8 is a dense model that uses 27B parameters on every token, compared with OUI-1&#39;s <strong>4B active parameters</strong>. Nothing at 4B active parameters or below scored higher; the next step up in score required a dense 27B.</p>\n<p>Generative UI Benchmark, open-weight models up to 31B active</p>\n<p>View data</p>\n<div class=\"table-wrap\"><table><thead><tr><th>model</th><th>active params</th><th>OpenUI score</th></tr></thead><tbody><tr><td>OUI-1 (DiffusionGemma, finetuned)</td><td>4B</td><td>71.7%</td></tr><tr><td>DiffusionGemma</td><td>4B</td><td>13%</td></tr><tr><td>Qwen3.8 27B</td><td>27B</td><td>78.8%</td></tr><tr><td>Qwen3.6 27B</td><td>27B</td><td>68.5%</td></tr><tr><td>Qwen3.6 35B-A3B</td><td>3B</td><td>61.4%</td></tr><tr><td>Gemma 4 31B</td><td>31B</td><td>46.7%</td></tr><tr><td>Phi-4 14B</td><td>14B</td><td>44%</td></tr><tr><td>Gemma 4 26B-A4B</td><td>4B</td><td>29.9%</td></tr><tr><td>Ministral 8B</td><td>8B</td><td>27.2%</td></tr><tr><td>Granite 4.1 8B</td><td>8B</td><td>14.7%</td></tr><tr><td>LFM 2.5 2.6B</td><td>2.6B</td><td>3.3%</td></tr></tbody></table></div>\n<p>The gain also generalized beyond the benchmark library. On the AppLess library, we tested 60 asks that the model had never seen during training. OUI-1 produced 55 valid outputs; DiffusionGemma produced 23.</p>\n<p>Valid outputs on the appless phone library</p>\n<p>60 asks written independently of every training file, one output each, counted valid when it parses clean: no schema errors, every name defined, at least three statements.</p>\n<p>DiffusionGemma23 / 60</p>\n<p>OUI-155 / 60</p>\n<p>A different component library from the benchmark&#39;s, with its own signatures in the system prompt. None of these asks or outputs were trained on.</p>\n<p>OUI-1 did more than bring us back to where we began. AppLess had relied on Gemma 4 running on Cerebras; it now runs on OUI-1. On the benchmark, OUI-1&#39;s <strong>71.7%</strong> surpassed both Gemma 4 31B at <strong>46.7%</strong> and Gemma 4 26B-A4B at <strong>29.9%</strong>. The experience that first required specialized inference hardware can now be powered by an open-weight, 4B-active model built to run on consumer hardware.</p>\n<p>[Model release</p>\n<h3 id=\"get-oui-1\">Get OUI-1</h3>\n<p>Download the open-weight model from Hugging Face.</p>\n<p>26B parameters · 4B active · FP8View model weights](<a href=\"https://huggingface.co/thesysdev/OUI-1\" rel=\"nofollow ugc noopener\">https://huggingface.co/thesysdev/OUI-1</a>)[Open evaluation</p>\n<h3 id=\"explore-the-benchmark\">Explore the benchmark</h3>\n<p>Review the scoring code and raw generations on GitHub.</p>\n<p>71.7% Generative UI BenchmarkView benchmark](<a href=\"https://github.com/thesysdev/Generative-ui-bench\" rel=\"nofollow ugc noopener\">https://github.com/thesysdev/Generative-ui-bench</a>)</p>\n<h2 id=\"directions-from-here\">Directions from here</h2>\n<p>Three directions matter from here:</p>\n<ul><li><strong>Personal devices.</strong> Run models like OUI-1 closer to the person, keeping more of their context on the device.</li><li><strong><a href=\"https://www.openui.com/docs/openui-lang/specification/v0.5\" rel=\"nofollow ugc noopener\">OpenUI Lang 0.5</a>.</strong> Generate interfaces with their own state, queries and mutations, so the runtime handles each interaction, not the model.</li><li><strong>Lower latency.</strong> Move toward reliable, locally generated interfaces that arrive in under a second.</li></ul>\n<h2 id=\"references\">References</h2>\n<ol><li><p>Google, [DiffusionGemma: faster text</p><p> generation](<a href=\"https://blog.google/innovation-and-ai/technology/developers-tools/diffusion-gemma-faster-text-generation/\" rel=\"nofollow ugc noopener\">https://blog.google/innovation-and-ai/technology/developers-tools/diffusion-gemma-faster-text-generation/</a>)</p></li><li><p>Deschenaux and Gulcehre, [Beyond Autoregression: Fast LLMs via Self-Distillation Through</p><p> Time](<a href=\"https://arxiv.org/abs/2410.21035\" rel=\"nofollow ugc noopener\">https://arxiv.org/abs/2410.21035</a>)</p></li><li><p>Zhang et al., [T3D: Few-Step Diffusion Language Models via Trajectory Self-Distillation with</p><p> Direct Discriminative Optimization](<a href=\"https://arxiv.org/abs/2602.12262\" rel=\"nofollow ugc noopener\">https://arxiv.org/abs/2602.12262</a>)</p></li></ol>","headings":[{"level":2,"text":"Why we built OUI-1","id":"why-we-built-oui-1"},{"level":2,"text":"Finding a model that fit the constraints","id":"finding-a-model-that-fit-the-constraints"},{"level":2,"text":"The gap became the north star","id":"the-gap-became-the-north-star"},{"level":2,"text":"How we trained it","id":"how-we-trained-it"},{"level":3,"text":"Phase 1: Supervised Fine Tuning","id":"phase-1-supervised-fine-tuning"},{"level":3,"text":"Phase 2: Self-distillation","id":"phase-2-self-distillation"},{"level":3,"text":"Phase 3: Generalizing across 27 component libraries","id":"phase-3-generalizing-across-27-component-libraries"},{"level":2,"text":"Results","id":"results"},{"level":3,"text":"Get OUI-1","id":"get-oui-1"},{"level":3,"text":"Explore the benchmark","id":"explore-the-benchmark"},{"level":2,"text":"Directions from here","id":"directions-from-here"},{"level":2,"text":"References","id":"references"}]}}