The work renders live, right in the thread.
Paste HTML — yours or your AI's — and the team gets the real thing: sliders move, forms submit, charts recompute. No downloads, no tab-switching.
In Slack, your AI-built HTML is just a file attachment. Frame renders it live and interactive — right where your team already talks.
This is the very beginning of your direct message history with Michael. Say hi 👋
sandbox-runtime v0.9.2. Canvases now render in a locked frame with no network or storage access — every shared HTML is isolated by default.This is the very beginning of your direct message history with Sarah.
Claude and Codex turn out HTML all day — dashboards, prototypes, reports. Paste it in Slack and it lands as a file attachment: raw code, nothing to look at. To see it, someone has to download the file, open it in a browser, and leave the conversation to do it.
Here's the Q3 dashboard Claude built.
<!doctype html>
<html><head><style>.kpi-grid{display:flex;gap:12px}
<div class="kpi"><span>MRR</span><b>$94k</b></div>
<script>const mrr=[38,41,44,46,51,55,58,63,78,84…
Here's the Q3 dashboard — flip it to Quarterly →
Slack attaches the HTML. Frame runs it.
The chat you already know, wrapped around the one thing it never had: the HTML itself, live, right where you talk about it.
Paste HTML — yours or your AI's — and the team gets the real thing: sliders move, forms submit, charts recompute. No downloads, no tab-switching.
Tell @frame what to change. It edits the canvas in place and saves a new, revertible version.
Roll back to any point — no history is lost. Fork to try an idea without touching the original.
Comment on this bar, that row — not "the third chart down." Resolve when it's handled.
Every canvas runs fully isolated — no network, no storage, no session. A teammate's canvas can't reach out.
fetch()network egress✕ BLOCKEDcookiesFrame session✕ BLOCKEDlocalStoragepersistence✕ BLOCKEDscriptsin a locked frame✓ SANDBOXEDSlack-compatible payloads — your CI and your agents post live previews to the channel without changing a line.
Open a canvas as its own tab next to the conversation about it. Compare two versions in two tabs; everything keeps its live state.
From the HTML your AI just built to a team working with the real thing — without anyone leaving the conversation.
Paste what Claude or Codex just built. Frame renders it as a live canvas in the thread — title, author, sandbox pill, the works. No upload dance, no link to somewhere else.
Teammates flip Monthly ↔ Quarterly and the KPIs recompute. They click a point to read its value, pin a comment to a tile, react — all in-thread. Feedback lands on the artifact, not three tabs away.
| Source | Δ |
|---|---|
| Product Hunt | +54% |
| Organic | +12% |
| Referral | +28% |
| Paid | −6% |
Tell Frame AI "mark week 9 — that's the launch email" and it saves a new version in place — revertible. Or fork it and iterate on your own copy. The thread becomes the workspace.
| Version | Author | When |
|---|---|---|
| v2 · current | Frame AI | now |
| v1 | Sarah Johnson | 9:24 AM |
Not a link to a dashboard somewhere else. The dashboard itself — running, interactive, exactly where the conversation is happening.
| Source | Signups | Δ |
|---|---|---|
| Product Hunt | 3,180 | +54% |
| Organic | 2,540 | +12% |
| Referral | 1,690 | +28% |
| Paid | 1,200 | −6% |
A year ago, sharing anything interactive meant a deploy. Now Claude and Codex build it from a sentence — and everyone's doing it. The output is HTML. The place to share it live didn't exist. Frame is that place.
Frame is rolling out team by team.
We’re onboarding small teams that build with AI.
one email when your spot opens — no drip campaign