The protocol only wins if Atrium is one command away inside every LLM surface — Claude Code, ChatGPT, Codex, Cursor, claude.ai, CI. The good news: the industry just standardized our distribution for us. ChatGPT's Apps SDK is built on MCP, and the MCP Apps extension (co-authored by OpenAI and Anthropic, official January 2026) means one server + one widget renders Atrium inside every major chat host.
The insight
We don't build N integrations. We build one protocol client, one MCP server, one MCP Apps widget — and wrap them in thin, per-surface installers. The widget is just HTML in a sandboxed iframe, which is literally our core competency.
An MCP Apps widget: the publish tool returns a pre-declared HTML resource; the host renders it sandboxed inline. Comments stream in live over the same connection. The loop without leaving the conversation.
The MCP server ships in the npm package (stdio, for local CLIs) and is built into every Atrium instance at /mcp (HTTP, OAuth-protected) — so the hosted tier and every self-hosted install is automatically a remote connector for claude.ai, ChatGPT, and anything else that adds custom MCP connectors.
Publish card with live preview, open-comment list, one-tap "revise & publish v2." Declared once as an HTML template, rendered by ChatGPT, Claude, VS Code, and Goose with zero client-specific code. Our artifact-sandboxing know-how applies directly.
Every instance serves /.well-known/atrium (instance metadata, MCP endpoint, OAuth server). atrium login acme.internal and connector setup need a hostname, nothing else.
Surface matrix
| Surface | How Atrium appears | Install | Wave |
|---|---|---|---|
| Claude Code | Plugin: skill (auto-publishes plans/reports, knows when to suggest it) + MCP server + /atrium commands | /plugin install atrium — official + community marketplaces | launch |
| Codex CLI | Same MCP server via codex mcp add atrium; AGENTS.md snippet for auto-suggest | one command | launch |
| claude.ai / Desktop | Remote MCP connector + MCP Apps widget (inline publish card, comments, revise button) | add connector URL, OAuth once | launch |
| ChatGPT | Apps SDK app (it's our same MCP server + widget) — publish, preview, revise inline; app-directory listing | directory install / connector in dev mode | fast follow |
| Cursor · Windsurf · VS Code | MCP server; VS Code also renders the MCP Apps widget. One-click install deeplinks on our site | deeplink / mcp.json snippet | launch |
| Gemini CLI & others | Anything that speaks MCP gets tools; anything that doesn't gets the plain HTTP API + CLI | extension / config snippet | fast follow |
| CI (GitHub Actions) | atrium/publish-action: publish on merge, comment URL on the PR; webhook wakes agents on feedback | one workflow step + ATRIUM_TOKEN | fast follow |
| Slack / Teams | Unfurl artifact links with preview + comment count; notify thread on new versions | org app install | later |
Wave = sequencing, not importance. Launch wave is what the 12-week plan ships; fast-follows land within ~4 weeks after.
Registries
The canonical io.atrium/mcp entry — what hosts increasingly use for discovery and one-click adds. Published from CI on every release.
Submit to claude-plugins-official (curated) and community marketplaces. The plugin bundles skill + MCP + commands so Claude Code users get the full experience from one install.
Apps SDK submission with the publish widget as the hero flow. Review gatekeeping is a real risk — which is exactly why the connector + self-host path must always work without it.
Cursor's MCP directory, VS Code's gallery, JetBrains. Mostly metadata + deeplinks; cheap to maintain from one manifest source in the repo.
npx @atrium/cli, Homebrew tap, ghcr.io/atrium/atrium. The CLI is also the skill's backend, so one versioned artifact serves humans and agents.
Self-hosted Atriums register nowhere and still get full agent support via /.well-known/atrium + /mcp. No registry can gatekeep the open path — that's the point.
Auth across surfaces
| Surface class | Grant | Experience |
|---|---|---|
| Local CLIs & coding agents (Claude Code, Codex, Cursor) | Device flow → scoped token on disk | atrium login once; agents inherit. Works headless, in containers, against any instance URL. |
| Remote connectors (claude.ai, ChatGPT, Desktop) | Standard OAuth 2.1 + PKCE at the instance's /oauth | "Connect Atrium" → org SSO → done. Same flow whether the instance is ours or self-hosted — MCP's auth spec already requires exactly this. |
| CI / service automations | Org-issued service tokens | ATRIUM_TOKEN secret; least-privilege scopes (publish-only by default). |
display.dev integrates with these hosts too — as a closed endpoint. Atrium's difference: every self-hosted instance is a first-class citizen of every surface, because the connector, widget, and OAuth server ship in the open image. An enterprise adds their own Atrium to ChatGPT and Claude in one afternoon. No vendor in the middle; nothing for an app-store review to take away.
Build cost
manifests/ dir, stamped from the release pipeline.