Deploy plain HTML to thin.host

Publish a folder of hand-written HTML, CSS and JS (or a single index.html) to thin.host. thin.host serves the static files and gives you a live URL right away. Your agent can do every step for you through the thin.host MCP server, or you can run one curl command.

At a glance

Stepplain HTML
Folder to deploythe folder that holds index.html
Deploycurl -F file=@site.zip -H "Authorization: Bearer $THINHOST_API_KEY" https://thin.host/v1/websites/archive
Live URLhttps://thin.host/s/my-site/, or your own domain

Before you start

Check your links

Until a domain points at it, a thin.host site lives under a sub-path: https://thin.host/s/<slug>/. Use relative paths (style.css, img/logo.png, about.html). Root-absolute paths such as /style.css only resolve once a custom domain points at the site.


<link rel="stylesheet" href="style.css">
<a href="about.html">About</a>

Deploy from your agent (MCP)

Connect thin.host to Claude Code, Claude Desktop, Cursor, VS Code, Windsurf, Codex or ChatGPT once (setup for each client), then ask:

Save this page as index.html and publish it to thin.host with the slug my-site.

With the local server (uvx thinhost-mcp) the agent writes the file and calls publish_website with its path. Ask for changes in the same conversation and it pushes them with update_website.

The hosted connector (https://thin.host/mcp, used by claude.ai and ChatGPT) cannot read your disk. From a coding agent it uploads with the REST call below; otherwise it publishes from a public link to a zip or HTML file with publish_website_from_url.

Deploy with curl

zip -r site.zip . -x '.*'
curl -F file=@site.zip -F title="My plain HTML site" -F slug=my-site \
  -H "Authorization: Bearer $THINHOST_API_KEY" \
  https://thin.host/v1/websites/archive

The JSON response includes url, the live address (https://thin.host/s/my-site/). To redeploy, upload the new zip to the site's archive endpoint; pages and assets missing from it are removed:

curl -F file=@site.zip \
  -H "Authorization: Bearer $THINHOST_API_KEY" \
  https://thin.host/v1/websites/my-site/archive

A single upload can be up to 30 MB. See the REST API reference for every field.

Add a custom domain

  1. Open the site in the dashboard and add your hostname under Custom Domains, for example www.example.com. A <name>.thin.host subdomain is free and works immediately.
  2. Create the DNS record the dashboard shows: a CNAME pointing at cname.thin.host. TLS is issued automatically once DNS resolves.

Pages on a custom domain get a canonical tag, a generated robots.txt and a sitemap.xml.

Plain HTML notes

FAQ

Can I upload without the command line?

Yes. Sign in and drop the files (or a zip) on the upload page at thin.host; you get the same live URL.

How large can a site be?

A single archive upload can be up to 30 MB. The local MCP server (uvx thinhost-mcp) reads the build folder directly and splits large sites across requests, up to 150 MB.

Other frameworks: all deploy guides. Coming from another host? Compare thin.host.