What the panel actually is
A sandboxed render of the file the model just produced, updated as the model rewrites it. It answers one question well: does this look right? You watch a page take shape without copying markup anywhere, which is genuinely the right tool while you are still iterating.
Where it lives
Inside the conversation. The artifact is a view onto a message, so its lifetime and its audience are the conversation's. That is fine while the reader is you, in the session. It becomes the constraint the moment the reader is someone who was never in the chat.
The gap between “I can see it” and “I can send it”
Seeing a render and having an address are different capabilities. A preview panel gives you the first; a publish primitive gives you the second. The whole reason this deployment exists is that an agent which can write a page but cannot put it at a URL is only half a tool.
What a URL adds that a panel cannot
- A link you can paste to a person who is not in your session.
- A stable address that survives being rewritten —
update_siteswaps the bytes, the link stays. - Access control on the link itself: a password, an email-domain gate, an expiry.
- A machine-readable copy at
/raw/:tokenthe agent can re-read next turn.
Using both, in the order that fits
Iterate in the panel, publish when it is ready to leave the room. They are not rivals; they
are two ends of the same task. One curl turns the finished artifact into a link:
curl -X POST https://read.botook.ai/v1/publish -F file=@index.htmlWhen the panel is all you need
Often. If the only reader is you and the page dies with the session, the artifact is the whole answer and a URL is overhead. The primitive matters exactly when the output has to outlive the chat or reach someone outside it.
Is an artifact hosting?
No — it is a preview bound to a conversation, not an address on the open web. Hosting starts when the page has a URL a stranger can open, which is the line this deployment is built to cross.
Do I lose the artifact when I publish?
No. Publishing copies the finished bytes to a URL; the panel is unaffected. You keep iterating in one and share from the other.