Every model now ships HTML and Markdown: specs, dashboards, reports, prototypes. They die in a chat window or get locked to one vendor's URL. Atrium gives any artifact a permanent link, comments, and version history, works from every LLM tool, and runs as well on your own servers as on ours.
The shift
People stopped asking models for answers in prose. They ask for a thing: a Q1 review page, a live chart, a migration plan, an interactive prototype. What is missing is a neutral, durable place to put the output.
The core idea
Atrium is not a static host. The product is a closed loop between human and agent: the artifact becomes a living spec both can edit through their natural interface.
This is the mechanic display.dev pioneered. Our bet: the loop belongs in an open standard, not a single closed vendor. See Competitive.
Surface area
A one-line CLI (atrium publish ./review.html), an MCP server so agents publish as a tool call, a Claude Code / Codex skill, a drag-and-drop uploader, and a plain HTTP API. Accepts HTML, Markdown, and images.
The unit is a bundle, not a file. atrium publish ./dist works for anything static: a lone HTML page, a Markdown doc, an Astro or Vite build, a Next.js export, an Observable notebook, an mdBook. Entry point, MIME types, and SPA fallback routing are handled; if it serves from a folder, it serves from Atrium.
HTML renders exactly as built: live charts, inline scripts, CSS. Markdown renders to clean styled HTML and is also served raw for machines. Each artifact runs sandboxed on its own origin.
Threaded comments anchored to a DOM element or Markdown line. Resolve and reopen. Every comment is exposed to agents as structured data so the revise loop closes automatically.
Every publish is an immutable version with author, timestamp, and message. Diff two versions, restore an old one, or deep-link to …@v3. Comments carry their base_version.
Per-artifact: public, unlisted-link, gated to your org via SSO, or password. Private by default, noindex by default so internal work never shows up in search.
Any agent pulls an artifact's current content, version list, and comment threads as Markdown/JSON. This is what makes Atrium a workspace rather than a pastebin.
display.dev and the LLM vendors will host your artifact. Atrium is the only one you can run yourself, read the source of, and extend, with the same code powering our hosted tier. The home is a commons, not a vendor's silo.
Stolen playbook
Shopify published the closest thing this category has to a longitudinal study. Beyond the architecture, six product lessons — each mapped to a concrete plan change.
Quick sites automatically know who's looking (name, team, Slack handle) — personalization with zero auth code. Ours: gated artifacts get atrium.viewer, so an agent-built dashboard greets you by name and filters to your team. Static hosts can't do this.
Quick's quick.db (realtime), quick.ai (keys server-side), uploads, and websockets turned pages into tools — lunch-vote sites in a minute. Ours: atrium.kv · atrium.ai · atrium.realtime as the M6 platform layer, same zero-config shape.
Quick sites import code from other sites; shared libraries for comments, voice, analytics, achievements emerged unprompted. Ours: view-source + Remix on every artifact, stable per-version asset URLs so artifacts can import from artifacts.
Quick refuses custom backends, cron, permissions tiers — "a small, fixed set of capabilities… makes people more creative, not less." Ours: the anti-roadmap is written down: no folders-of-folders, no approval workflows, no WYSIWYG editor. Show people it's already possible.
Quick's growth came from personal homepages, webrings, then a 140-game jam — fun first, dashboards second. Ours: the hosted free tier ships with playful templates and a public gallery; launch content leads with joy, not governance.
"Quick ships with all the skills your agent needs" — quick init + any agent = a working site in under a minute. Ours: the Claude Code / Codex skill teaches the platform APIs and templates, so agents build richer artifacts, not just upload them.
Also instructive: Quick later rewrote its server Node → Go for memory and parallelism — exactly why our storage seams stay clean (Technical). And their one regret-shaped lesson: rate limits came only after people ran batch jobs through it. Ours ship in v1.
Packaging
The full publish/comment/version engine is open source. We monetize hosted convenience and enterprise controls, never by crippling the core.
Flat per-org pricing, unlimited viewers, matching the category norm display.dev set. Numbers to be set after a pricing pass.
Scope
Ship the loop end to end for one agent and one storage backend, then widen. Milestones live on the Technical page.
dist/ folder). CLI + MCP, drag-drop upload.@vN deep links.docker compose up (app + Postgres + MinIO).atrium.viewer (who's looking), atrium.kv (realtime data), atrium.ai (LLM proxy, keys server-side), atrium.realtime. Plus remix/fork, cross-artifact imports, analytics, embeds.