Spaces:
Running
Running
File size: 8,102 Bytes
8d1a72e df091f0 8d1a72e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | <!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Agate — in your browser</title>
<meta name="description" content="Agate Preview 001, 002 and 003, LogoLabs' 0.26B text-to-image models, running entirely in your browser on WebGPU.">
<link rel="icon" href="assets/agate-a.svg" type="image/svg+xml">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link crossorigin="anonymous" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600&family=Inter+Tight:wght@700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="page">
<header class="mast">
<div class="mast-left">
<img class="lockup" src="assets/agate-lockup.svg" alt="Agate">
<div class="mast-meta">
<span class="label"><i class="sq"></i><span id="mast-version">Preview 003</span></span>
<span class="label dim" id="mast-spec">0.26B · text-to-image · 512 px</span>
</div>
</div>
<a class="imprint" href="https://logolabs.org" target="_blank" rel="noopener">
<img src="assets/logolabs-mark.svg" alt="" width="22" height="30">
<span class="label">LogoLabs</span>
</a>
</header>
<hr class="rule">
<section class="intro">
<h1>Agate, in your browser.</h1>
<p>A 0.19B-parameter flow model with a 68M text encoder, running on your own GPU through WebGPU.
The first visit downloads the chosen model once (<span id="dl-size">about 530 MB</span>); after that it loads from the browser cache.</p>
</section>
<section class="versions" aria-labelledby="ver-label">
<span class="label" id="ver-label">Model</span>
<div class="seg" role="radiogroup" aria-labelledby="ver-label" id="versions"></div>
<p class="ver-note" id="ver-note"></p>
</section>
<div id="nogpu" class="notice" hidden>
<span class="label"><i class="sq red"></i>WebGPU unavailable</span>
<p id="nogpu-why"></p>
<p>Agate needs WebGPU for usable speed: use a recent Chrome or Edge (113+) on Windows, macOS or ChromeOS,
or Chrome on Android 121+; on Linux and in Firefox/Safari WebGPU may have to be enabled in the browser's flags.
You can still run it on the CPU (WebAssembly) — correct, but several minutes per image (far longer at 512 px).</p>
<button id="use-wasm" class="btn ghost">Run on CPU instead</button>
</div>
<main class="grid">
<section class="panel controls">
<label class="label" for="prompt">Prompt</label>
<textarea id="prompt" rows="3" spellcheck="false">a green teapot and a red cup on a table</textarea>
<div class="examples" id="examples">
<span class="label dim">Try</span>
</div>
<label class="label" for="negative">Avoid <span class="dim" id="neg-hint">(optional negative prompt)</span></label>
<input id="negative" type="text" spellcheck="false" placeholder="e.g. text, blur">
<div class="row">
<div class="field">
<label class="label" for="seed">Seed</label>
<div class="seed-row">
<input id="seed" type="number" min="0" max="4294967295" step="1" value="0">
<button id="dice" class="btn icon" title="Random seed" aria-label="Random seed">⟳</button>
</div>
</div>
<div class="field">
<label class="label" for="steps">Steps <b id="steps-v">50</b>
<span class="toggle fast" title="25 steps: about twice as fast; detail holds, the layout can change"><input type="checkbox" id="fast"> Fast</span></label>
<input id="steps" type="range" min="4" max="50" step="1" value="50">
</div>
<div class="field">
<label class="label" for="cfg">CFG <b id="cfg-v">3.0</b></label>
<input id="cfg" type="range" min="1" max="8" step="0.5" value="3">
</div>
</div>
<div class="row res-row" id="res-row" hidden>
<div class="field">
<span class="label">Resolution</span>
<div class="seg small" role="radiogroup" id="res"></div>
</div>
</div>
<button id="go" class="btn primary" disabled>Load model</button>
<div class="progress" aria-live="polite">
<div class="bar"><div id="bar-fill"></div></div>
<div class="progress-text"><span id="status" class="label">Idle</span><span id="status-r" class="label dim"></span></div>
</div>
<p class="prepared" id="prepared" hidden></p>
</section>
<section class="panel output">
<div class="out-head">
<span class="label"><i class="sq"></i><span id="out-label">Output · 512 × 512</span></span>
<span class="toggles">
<label class="label toggle" title="Show the thinker's 16 x 16 plan and the expected final image at every step"><input type="checkbox" id="show-thinker" checked> Show thinker</label>
<label class="label toggle"><input type="checkbox" id="crisp"> Crisp pixels</label>
</span>
</div>
<div class="frame" id="frame">
<canvas id="canvas" width="512" height="512"></canvas>
<div class="placeholder" id="placeholder">
<img src="assets/agate-a.svg" alt="">
</div>
</div>
<div class="thinker" id="thinker" hidden>
<figure><canvas id="plan-canvas" width="16" height="16"></canvas>
<figcaption class="label dim">Thinker plan · 16 × 16</figcaption></figure>
<figure><canvas id="pred-canvas" width="32" height="32"></canvas>
<figcaption class="label dim">Expected · <span id="thinker-step">0 / 0</span></figcaption></figure>
<p class="thinker-note">The thinker lays the picture out on a 16 × 16 grid before the renderer paints it.
Colours are the plan's three main directions (fixed at the first step, as in the ComfyUI nodes); the
expected image is x₁ = z + (1 − t)·v, shown with the SD latent→RGB approximation.</p>
</div>
<p class="ai-note" id="ai-note" hidden><i class="sq red"></i><span><b>AI-generated image.</b>
Made by <span id="ai-model">Agate Preview 003</span>; it carries an invisible watermark and, when saved, PNG provenance metadata (no prompt).</span></p>
<div class="out-foot">
<dl class="timings" id="timings"></dl>
<a id="save" class="btn ghost small" download="agate.png" hidden>Save PNG</a>
</div>
</section>
</main>
<div id="parity" class="notice" hidden></div>
<hr class="rule">
<footer class="foot">
<p class="strong">Runs entirely in your browser on WebGPU — nothing leaves your machine.</p>
<p class="small-print">Every image made here is marked as AI-generated (EU AI Act Art. 50): an invisible watermark in the
pixels (invisible-watermark “dwtDctSvd”, payload AGATE + release) and, in the saved PNG, text fields
<code>ai_generated</code>, <code>generator</code>, <code>model</code>. Neither survives every edit; please label AI images you publish.</p>
<p class="small-print">Why Agate: LogoLabs' search for the best small-scale image architecture, as groundwork for glyph and symbol generation and vector-native fonts to go with our wordmarks. General image generation served as a benchmark-friendly proxy for those tasks (unlike, e.g., SDF generation); next it feeds SVG generation with Inkvec. Released to share these architectural efforts.</p>
<p class="label dim">
<a href="https://logolabs.org" target="_blank" rel="noopener">logolabs.org</a> ·
<a href="https://huggingface.co/Logolabs" target="_blank" rel="noopener">huggingface.co/Logolabs</a> ·
MIT licence · <span id="backend">backend: —</span>
</p>
</footer>
</div>
<script src="js/config.js"></script>
<script type="module" src="js/app.js"></script>
</body>
</html>
|