# Host an HTML dashboard your agent built · Stacktree

Source: https://stacktr.ee/workflows/agent-built-dashboard

[Skip to content](#main) [Stacktree](/)[Developers](/developers)[Agents](/agents)[Docs](/docs)[Use cases](/use-cases)[Pricing](/pricing)[Blog](/blog)[Dashboard](https://app.stacktr.ee)[Sign in →](https://app.stacktr.ee)      By [ Steve Smith ](/about) · Founder, Stacktree  ·  Last updated September 20, 2026          workflow

#  Host the HTML dashboard your agent built.

   The agent did the hard part: gathered the data, drew the charts, wrote dashboard.html. What is missing is a URL. Publish the file to a private, unguessable link that opens in any browser with no account, refresh it in place when the numbers change, or let it expire after the meeting.

  [ Get started free ](https://app.stacktr.ee/?join=1&from=seo_workflows_agent_built_dashboard)   install npx stacktree-install
Copy
     No card · 3 pages free · about a minute

##  How do you host an HTML dashboard online?

Save the dashboard as one self-contained HTML file and publish it: drag it onto app.stacktr.ee, have the agent call publish_html, or POST it to the API with curl. You get an unguessable private URL that opens in any browser with no account, and the agent can refresh it in place.

## The dashboard is done. The URL is the missing step.

 Agents build dashboards on demand now: ask for a view of the sprint, the funnel, the incident, and a few minutes later there is a finished HTML file with the charts drawn and the data inlined. The file is the whole app. What it does not have is an address, and a dashboard nobody else can open is a screenshot with extra steps.

 Hosting it does not need a deploy pipeline, a repo, or a static-site project. It needs the file served at a link, private because the numbers are usually real. Here is [a live one](https://stacktr.ee/p/wER8kbsdkFvYjDQCuZriHv/): an incident triage board, exactly the kind of single-file dashboard an agent emits, hosted as a Stacktree page. More finished shapes are in [the examples gallery](/examples).

## Typical flow

  - Ask the agent for the dashboard as one self-contained file: styles inlined, data snapshot embedded as JSON, charts drawn client-side. No build step, nothing to install.
 - The agent publishes it with publish_html and hands back the private URL in the same conversation. No agent in the loop? Drag the file onto [app.stacktr.ee](https://app.stacktr.ee) or curl it (below).
 - Send the link. It opens in any browser; nobody creates an account. If the numbers are client-facing, add a passcode or gate it to their email domain.
 - When the data moves, the agent re-renders and calls update_site. Same URL, new numbers, so the link in the channel stays right.
 - If it was a one-meeting dashboard, set an expiry instead and let it delete itself.

## Standing dashboard or throwaway?

 Both are legitimate, and the plumbing differs by one decision.

  - Standing. The dashboard lives at one URL and a schedule refreshes it: the agent on a cron, an n8n workflow via [the community node](/n8n), or CI via the stevysmith/stacktree-actions GitHub Action with a pinned site id. This is the [recurring report workflow](/workflows/recurring-client-report) wearing charts.
 - Throwaway. Publish with an expiry, or publish anonymously and take the free 24-hour lifespan. The pattern of building a dashboard for one conversation and discarding it is real; the hosting should be as disposable as the artifact.

## Run it now

### 1. Paste one line into your agent

```
`Fetch and follow https://stacktr.ee/prompt.md, then publish this dashboard as a private link I can send to the team.`
```

 Works in any agent that can fetch a URL. [The instructions](/prompt.md) are plain Markdown you can read first.

### 2. Install once

```
`npx stacktree-install`
```

 Configures Claude Code, Cursor, Codex CLI, OpenCode, or Amp. On Claude.ai, add the connector URL `https://api.stacktr.ee/mcp` instead; [one-click setup](/claude-ai-connector).

### 3. No signup: curl it

```
`curl -X POST https://api.stacktr.ee/sites -F file=@dashboard.html`
```

 Publishes anonymously: a private URL that lives 24 hours, no account and no key. The response includes a claim token if the dashboard turns out to deserve a longer life.

FAQ

## Frequent questions

     Does an HTML dashboard need a server? +  Not if the data rides inside the file, which is how agents build them: a JSON snapshot embedded in the page, charts drawn client-side. Stacktree serves the file from a CDN like any web page. If your dashboard fetches a live API instead, that API must be reachable from the viewer's browser; for most agent-built dashboards the honest answer is to re-render and update the page rather than wire up live queries.   Is the dashboard public once hosted? +  No. The URL is an unguessable token that is never listed or indexed, so only people you send it to can find it. On top of that you can add a passcode on any plan, or restrict viewers to a company email domain from Solo. Viewers never create accounts.   How do I update the numbers without sending a new link? +  Re-render and replace. The agent calls update_site with the same site id and the URL you already shared shows the new data. A replace does not count as a new publish, so a dashboard refreshed daily costs one page slot, not thirty.   What about a throwaway dashboard for one meeting? +  Set an expiry when you publish and the page removes itself on schedule. An anonymous publish already does this: no account, link lives 24 hours, which is exactly the lifespan of most meeting dashboards. Burn-after-read is there for the extreme case of a single view.
Keep reading

## Related guides

   -  [ Publish HTML from Codex Wire Stacktree into Codex CLI as an MCP server. ](/codex)
-  [ How to host a dashboard your AI agent built The background piece: why agent dashboards need a private home. ](/host-ai-dashboard)
-  [ Throwaway dashboards The disposable end of the pattern, and why expiry is a feature. ](/blog/throwaway-dashboard)
-  [ Recurring client report The same loop for documents: one URL, updated in place on schedule. ](/workflows/recurring-client-report)
-  [ Internal tool hosting When the single file is a utility rather than a dashboard. ](/internal-tool-hosting)
-  [ Example deliverables Live pages showing the finished form. ](/examples)
-  [ All workflows The other three recipes. ](/workflows)

References

## Sources and further reading

   -  [ Ryan Carson on X, stop building dashboards ↗ The post behind the pattern: have an agent gather the data and build a temporary HTML dashboard on demand. ](https://x.com/ryancarson/status/2071535177126277239)
-  [ Model Context Protocol ↗ The protocol the agent publishes over, without leaving the conversation. ](https://modelcontextprotocol.io)

##  Give the dashboard a link.

 Publish it anonymously right now, no account; it lives 24 hours. Keep it, gate it, and refresh it in place from $0.

 [ Sign up free → ](https://app.stacktr.ee/?join=1&from=cta_workflows_agent_built_dashboard)   install npx stacktree-install
Copy
       Private hosting for the HTML your agents make.

[](https://betalist.com/startups/stacktree?utm_campaign=badge-stacktree&utm_medium=badge&utm_source=badge-featured)[Featured on](https://devhunt.org/tool/stacktree)[](https://buildlist.io)[Get started free](https://app.stacktr.ee/?join=1)

## Product

- [Templates](/templates)
- [Example deliverables](/examples)
- [Custom domains](/custom-domains)
- [Client feedback](/client-feedback-loop)
- [One-time links](/one-time-view-links)
- [See how pages get read](/page-engagement)
- [Made with Stacktree](/made-with)
- [Security](/security)
- [Watch the demo](/demo)

## Agents

- [All integrations](/agents)
- [Claude Code](/claude-code)
- [OpenAI Codex](/codex)
- [Cursor](/cursor)
- [Claude.ai connector](/claude-ai-connector)
- [MCP server](/mcp-publish-html)
- [Deploy from Claude Code](/deploy-html-from-claude-code)
- [Skills](/skills)
- [Slack app](/slack)
- [n8n node](/n8n)
- [Agent payments (x402)](/x402)

## Alternatives

- [All comparisons](/alternatives)
- [Head-to-head comparisons](/compare)
- [Tiiny Host](/tiiny-host-alternative)
- [GitHub Pages (private)](/github-pages-private-alternative)
- [Vercel](/vercel-alternative-for-agents)
- [ngrok](/ngrok-alternative-for-html)
- [Display.dev](/display-dev-alternative)
- [Static.app](/static-app-alternative)
- [OpenAI Codex Sites](/openai-codex-sites-alternative)
- [here.now](/here-now-alternative)
- [Shippage](/shippage-ai-alternative)
- [Best private hosting](/best-private-html-hosting)

## Use cases

- [All use cases](/use-cases)
- [Share with clients](/share-with-clients)
- [Send a file to a client](/share-html-file-with-client)
- [Share Claude artifacts](/share-claude-artifacts)
- [Share Jupyter notebooks](/share-jupyter-notebook-html)
- [Host Storybook privately](/host-storybook-privately)
- [Architecture diagrams](/share-architecture-diagrams)
- [AI-generated reports](/host-ai-reports)
- [Internal HTML tools](/internal-tool-hosting)
- [Private HTML hosting](/private-html-hosting)
- [Vibe-coded page hosting](/vibe-coding-hosting)
- [Leave a website builder](/website-builder-migration)

## Learn

- [Blog](/blog)
- [Glossary](/glossary)
- [FAQ](/faq)
- [Agent-loop hosting](/agent-loop-hosting)
- [Why agents need a publish primitive](/blog/why-agents-need-a-publish-primitive)
- [MCP servers explained](/blog/mcp-servers-explained-for-developers)
- [What changed in the 2026-07 MCP spec](/blog/mcp-2026-spec-changes)
- [Sites in Codex explained](/blog/sites-in-codex-explained)
- [Private-by-default hosting](/blog/private-by-default-html-hosting)
- [An agent paid us $1 (x402)](/blog/agent-paid-to-provision-itself)
- [When a loop hits a paywall](/blog/loop-engineering-paywall)
- [Pricing](/pricing)
- [Self-host (new)](/self-host)
- [Changelog](/changelog)
- [Docs](https://stacktr.ee/docs)
- [About](/about)
© 2026 Stacktree · stacktr.ee

[Privacy](/privacy)[Terms](/terms)[Security](/security)[Dashboard](https://app.stacktr.ee)[npm](https://www.npmjs.com/package/stacktree-mcp)[Sitemap](/sitemap.xml)[llms.txt](/llms.txt)[API spec](/openapi.json)

---
Full markdown summary of the Stacktree marketing surface: https://stacktr.ee/llms-full.txt
