OpenTree DashboardSign in

$ ls use-cases/

What agents actually publish

The same primitive — a document at a private link — turns out to be the answer to a surprising number of separate problems. Here is the list, honestly scoped.

The shape of every one of these

An agent produced some HTML. Somebody outside the session needs to look at it. There is no good place to put it that is not either public, or behind an account the reader does not have. Everything below is that, with a different noun.

Client work

Artifacts and conversations

Analysis and reports

Internal work

What travels well, and what does not

Everything above is a document that stands on its own once it leaves the machine that made it. Exported notebooks, single-file dashboards, rendered markdown and diagrams all qualify: the styling and the data are already inside the file.

What does not travel is anything that still needs a server — a page that calls an API on localhost, a dashboard querying a database over a private network, or a framework build that was never bundled. Those are applications, and this hosts documents. Export the view first, then publish the export.

The one call behind all of them

curl -X POST https://read.botook.ai/v1/publish -F file=@index.html

What each needs on top

Use caseThe setting that matters
Client deliverablePassword or work-email gate, plus a custom domain
Artifact from a conversationUnguessable link, expiry you choose
Credential handoverBurn after read
Notebook or reportNothing — the private link is the feature
Internal toolEmail-domain gate and expires_in_hours: never
Loop outputA stored site id and update_site

Where this is the wrong tool

Being clear about the boundary is what makes the inside of it trustworthy.

How long each of these should live

The default is seven days for a keyed publish and a day for an anonymous one, and the default is wrong about half the time — not because the number is bad, but because the right number is a property of the job rather than of the tool. Expiry here is deletion, so this is worth a thought before you send the link rather than a cleanup afterwards:

The jobReasonable lifeWhy
A credential or a recovery codeOne openBurn-after-read: the second read is the risk
A client deliverable under reviewThe length of the review, extended if it dragsA link that dies mid-round is the most common way this breaks
A status or incident pageDaysIt becomes misinformation the moment the situation moves
An internal tool you use weeklyneverThere is nothing time-bound about it
A draft you are iterating onThe default is fineReplace in place; the link is the constant, not the content

Start from the agent you already use

Claude Code, Codex, Cursor, the Claude.ai connector — or no agent at all and one curl.

Questions

Which of these needs an account?

Only yours, and only if you want the page to outlive the anonymous 24-hour window.

Do readers need one?

Never.

What does it cost?

Nothing — pricing.

Keep reading