Artefact, canvas, frame : héberger vous-même la page générée Zerolith, a serverless platform, now lets developers host AI-generated HTML pages directly from functions, giving them a permanent URL, a private SQLite database, and four access-control options (API key, signed URL, public, custom domain). The feature addresses the limitation of AI artifacts like Claude's Artefact, ChatGPT's Canvas, and Dust's Frame, which lack self-hosting capabilities. A live dashboard example using Open-Meteo data is available at demo-dashboard-fn-539b8643bc44462c815a5ad5a423d976.api.zerolith.io. Artefact, canvas, frame : héberger vous-même la page générée Un artefact montre une idée en dix secondes, puis reste dans la conversation. Une fonction rend la même page HTML, avec une URL qui est la vôtre, une base SQLite privée, et quatre façons de choisir qui peut l'ouvrir : clé d'API, URL signée, public, domaine sur mesure. Vous avez sans doute déjà fait ça : décrire un graphique à un assistant, et recevoir dix secondes plus tard une page qui marche, avec ses courbes, ses couleurs et son survol. Chaque éditeur a son nom pour cet objet. C'est un artefact chez Claude, un canvas chez ChatGPT, chez Gemini et dans Le Chat de Mistral, Grok Studio chez xAI, un Lab chez Perplexity, une Frame chez Dust. Tous font très bien la même chose : montrer une idée avant de décider si elle vaut un projet. Puis vient la question suivante, et elle tue la démo : « tu peux m'envoyer le lien ? » Un lien, il y en a parfois un. On publie un artefact, on partage une Frame par un lien à jeton, l'app d'un Lab se déploie sur sa propre page. Mais cette page vit chez l'éditeur, dans un bac à sable : les chiffres qu'elle affiche sont ceux qu'on a écrits dedans, elle n'a aucun endroit à elle où écrire, et « qui peut l'ouvrir » se limite à ce que le produit propose, publique ou réservée à votre espace de travail. Le manque n'est pas dans le rendu, il est dans l'hébergement. Or une fonction sait très bien renvoyer une page, et pas seulement du JSON. Avec, en plus, les trois choses qui manquent à un artefact : une URL qui est la vôtre, une base de données, et une porte dont vous choisissez la serrure. Une fonction peut répondre autre chose que du JSON Le contrat du handler laisse choisir le type de contenu. Un dictionnaire part en application/json , une chaîne en text/plain , mais ce sont des défauts, pas des impositions : un Content-Type dans les en-têtes les remplace. python def handler request : return 200, "< doctype html