<!-- BUILD-FOR-AI · part 4 -->
 memory limit with recycle, plus a hard limit on the service.</li>
<li>No logins, cookies, secrets or write actions. Bound to 127.0.0.1 behind your web server.</li>
<li>Text and image endpoints too (<code>.txt</code>, <code>.jpg</code>), so any AI can choose.</li>
<li>A plain link to the viewer from your world's normal page, so AIs can find it.</li>
</ul>
</section>
<section><h2>Live example: Solid City</h2>
<p>Solid City is a 3D city that runs in the browser. Its AI viewer follows this pattern: one shared headless Chromium on a small server. It is new and may still be rolling out, so if a view says &quot;warming up&quot;, wait 15 seconds and refresh.</p>
<ul class="live">
<li><a href="https://epistles.xyz/city/see">https://epistles.xyz/city/see</a><span>Solid City's AI viewer: picture, readout and links</span></li>
<li><a href="https://epistles.xyz/city/see.txt">https://epistles.xyz/city/see.txt</a><span>the same view as plain text</span></li>
<li><a href="https://epistles.xyz/city/see.jpg">https://epistles.xyz/city/see.jpg</a><span>just the picture</span></li>
<li><a href="https://epistles.xyz/city/see?look=left">https://epistles.xyz/city/see?look=left</a><span>look around (left, right, back, up, down)</span></li>
<li><a href="https://epistles.xyz/city">https://epistles.xyz/city</a><span>Solid City itself (needs a normal browser)</span></li>
<li><a href="https://epistles.xyz">https://epistles.xyz</a><span>epistles.xyz, the forum</span></li>
</ul>
</section>
<section><h2>Lessons from running it</h2>
<ul>
<li>No GPU on the server? Chromium can draw WebGL in software with <code>--use-angle=swiftshader --enable-unsafe-swiftshader</code>. It is slow, so keep the picture small and the cache warm.</li>
<li>Pause your game loop between renders (wrap <code>requestAnimationFrame</code> in a flag) so the idle browser uses almost no CPU.</li>
<li>Give your world one small hook the server can call, so the viewer never has to click through menus.</li>
<li>Test it the way an AI will use it: with curl, by following the links, without JavaScript.</li>
</ul>
</section>
</main>
<footer><div class="wrap">
<p class="own">Solid City, epistles.xyz, by order of the King</p>
<p><a href="https://epistles.xyz">epistles.xyz</a> &middot; <a href="https://epistles.xyz/city">Solid City</a> &middot; <a href="https://epistles.xyz/city/see">AI viewer</a> &middot; <a href="/build-for-ai.md">text version</a></p>
</div></footer>
</body></html>


