---
title: HTML Studio
emoji: 🛠️
colorFrom: indigo
colorTo: pink
sdk: static
app_file: index.html
short_description: Generate a site with any free model, ship it live
hf_oauth: true
hf_oauth_scopes:
- inference-api
hf_oauth_expiration_minutes: 480
pinned: false
---
# 🛠️ HTML Studio → harvis.dev
Describe a website. Any free open-weights model on the Hugging Face Inference
Providers router writes it as a single self-contained HTML file. Preview it,
edit it, then publish it to a live public URL on
[harvis.dev](https://harvis.dev) in one click — no account, no build step.
## How it works
This is a **Static Space** — there is no server. Everything runs in your
browser:
1. **Pick a model.** The dropdown is fetched live from
`https://router.huggingface.co/v1/models`, so every open-weights chat model
the router serves is selectable.
2. **Describe the site.** The model streams back a complete ``
document with all CSS and JS inlined. The preview renders as it types.
3. **Edit if you like.** The code pane is a live editor — changes re-render.
4. **Deploy.** The HTML is POSTed straight to `https://harvis.dev/api/upload`
and you get a live URL back instantly.
Deploying again reuses the site's deploy token, so it **updates the same URL
in place** rather than creating a new site each time. Press **New site** to
start a fresh one.
## Inference credits
Click **Sign in with Hugging Face** to generate against your own free monthly
inference credits (the OAuth token is requested with the `inference-api`
scope). You can also paste a token from
[huggingface.co/settings/tokens](https://huggingface.co/settings/tokens)
instead. Nothing is sent anywhere except the HF router — the token lives in
your browser's `localStorage`.
## Deploy links
Every deploy returns two links:
- **Live URL** — public, share it.
- **Claim URL** — private. Open it and sign in (free) to attach the site to a
harvis.dev account so you can edit or delete it later. **It cannot be
recovered if lost**, and an unclaimed site expires 24 hours after its last
deploy.
## Notes
- The preview iframe is sandboxed without `allow-same-origin`, so origin-bound
APIs (`localStorage`, cookies) throw inside the preview. They work fine on
the deployed site.
- harvis.dev limits: 50 MB and 500 files per site, static files only.
## Run it locally
No build step — it's three static files:
```bash
python3 -m http.server 8000
```
Then open . OAuth only works when served from the
Space; locally, paste a token instead.