# Internal tool hosting for one-off HTML utilities · Stacktree

Source: https://stacktr.ee/internal-tool-hosting

[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 27, 2026          use case

#  Internal tool hosting for the HTML utilities your agent writes.

   Single-file JSON viewers, regex testers, log filterers, payload inspectors. Each one is too small for a repo but too useful to throw away. Stacktree is the host that meets that granularity without making you stand up a project.

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

##  Where should one-off HTML utilities live?

On a publish-primitive host like Stacktree. Each utility — a JSON viewer, a log filterer, a regex tester preloaded with your patterns — lives at its own private URL with replace-in-place semantics. The agent that wrote the tool can iterate on it; your teammates bookmark the URL once and pick up improvements automatically. No repo, no CI, no DNS.

## The shape of work this fits

  - Your agent generates a single-file tool to inspect a specific JSON shape your team uses.
 - You ask the agent for "a regex tester preloaded with the patterns we use for log parsing."
 - The agent writes a tiny diff viewer for two CSV files with your column conventions baked in.
 - You need a calendar-diff tool that highlights working-hours conflicts only.
 - The agent emits a tiny app for visualising a webhook payload, complete with your enum colours.

## Why these don't fit other primitives

  - A repo is too heavy — the tool is single-file, no PRs needed.
 - A Vercel project is too heavy — the tool isn't a deploy.
 - A Notion page kills interactivity.
 - A Slack message with the .html attached is unfindable in two weeks.
 - A local file isn't shareable without the receiver doing setup.

## What Stacktree gives you

  - One URL per tool. Shareable, bookmarkable, gated.
 - Replace in place. The agent ships v2 of the regex tester; your teammates pick it up on refresh.
 - Tagged by slug. Custom slugs (Pro) like regex.yourco.com if you want a memorable address.
 - CSP defaults. Single-file tools often need script src; Stacktree applies a sensible default policy.

## The agent flow

```
`You: "Write a tool that pretty-prints our webhook payloads with the enum colours we use, and publish it as a Stacktree gated to @yourco.com."

Agent:
  1. wrote payload-viewer.html
  2. publish_html(file: "payload-viewer.html", slug: "payloads")
     → https://payloads.stacktr.ee
  3. set_email_gate(slug: "payloads", domain: "yourco.com")`
```

FAQ

## Frequent questions

     What counts as an "internal tool" here? +  A self-contained single-file HTML utility. Examples: a JSON viewer with custom highlighting, a log filterer for your specific format, a regex tester pre-loaded with your patterns, a payload inspector for your API, a CSV-to-table converter with your schema baked in, a calendar diff tool. Each is too small for a repo but too useful to throw away.   Why a host instead of just opening the .html file locally? +  Three reasons. (1) The link is shareable — your teammate doesn't need to clone anything. (2) The agent can replace it in place when the tool gets a new feature. (3) Privacy controls (email-domain gate, password) are a tool call away rather than a "trust the file" question.   Can I bookmark them? +  That's the point. Each tool gets a stable URL. The bookmark survives every revision the agent makes via `update_site`.   Are these like Cloudflare Workers / Vercel functions? +  Different shape — those are dynamic backends. Stacktree hosts pure client-side HTML/JS. The "tool" runs in the viewer's browser; nothing executes on Stacktree's side beyond serving the file.   How does this compare to Glitch or CodePen? +  Glitch and CodePen are editor-first — you go there to write code interactively. Stacktree is a publish primitive — you (or your agent) write code in your editor, then publish the artifact via tool call. They don't overlap much in workflow.   Can I gate access? +  Yes. Per-link password, per-link email-domain gate, or end-to-end encryption. The same controls that apply to any other Stacktree publish.
Keep reading

## Related guides

   -  [ Publish HTML from Claude Code Add Stacktree as an MCP server and Claude Code will publish the HTML it writes to a private, unguessable URL. ](/claude-code)
-  [ Share architecture diagrams Same primitive for diagram-style HTML. ](/share-architecture-diagrams)
-  [ Host AI-generated reports For longer-form analysis output. ](/host-ai-reports)
-  [ Private HTML hosting in 2026 Category overview. ](/private-html-hosting)
-  [ Publish from Cursor The agent most often building these tools. ](/cursor)
-  [ Throwaway dashboards Agents now build a dashboard on demand and throw it away. ](/blog/throwaway-dashboard)

References

## Sources and further reading

   -  [ MDN — Content-Security-Policy ↗ Why CSP defaults matter for single-file tools that load JS. ](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Security-Policy)
-  [ Model Context Protocol — tools ↗ The MCP verbs the agent uses to publish each tool. ](https://modelcontextprotocol.io/specification/2025-11-25/server/tools)
-  [ Karpathy — agents output HTML ↗ The thread framing this entire category of work. ](https://x.com/karpathy/status/2053872850101285137)

##  Give every one-off tool a private URL.

 Bookmark once. The agent updates the same URL forever.

 [ Sign up free → ](https://app.stacktr.ee/?join=1&from=cta_internal_tool_hosting)   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

- [Page video](/page-video)
- [Ask this page](/ask-this-page)
- [Client spaces](/client-spaces)
- [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)
- [Claude Cowork](/what-is-claude-cowork)
- [Meta Muse](/muse)
- [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)
- [Where AI output should live](/where-ai-output-lives)
- [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
