Client editing for plain HTML
Let clients edit your plain HTML site.
A static HTML site is the most reliable thing on the internet and the least editable by a client. Every CMS that promises to fix that wants to rebuild the site inside itself.
Tusk is a client editing layer for sites you already built. You keep the code, the repo and the hosting. Tusk marks the text, photos and downloads the client may change, and the client changes them on their own live page. Nothing of Tusk runs between a visitor and the site.
Where your plain HTML site needs to be
- No export. The site is already files. Tusk marks elements in those files and the build step writes published content into the copy your host serves.
- Deploy on Cloudflare Pages, Netlify, Vercel, GitHub Pages or an ordinary server. If your host has no deploy hook, a commit-triggered build or a tiny CI job does the same thing.
Connecting it, step by step
- Add one attribute per editable thing: <h1 data-tusk="home.headline">, <img data-tusk="home.hero">, <a data-tusk="home.pricelist" href="/prices.pdf">. Or let an agent do it.
- Log in once, then press Scan in the dashboard: Tusk reads the pages and builds the fields from the marks (and can find unmarked text too).
- Add two zero-dependency scripts to your build: node tusk-pull.mjs && node tusk-apply.mjs dist, with TUSK_ASSETS=dist/tusk so the photos land in the folder you serve. Paste your deploy hook under Manage › Going live.
- Invite the client. They click the words on the live page.
The MCP config, for Claude Code, Cursor, Codex or Windsurf. Nothing to install: it runs from npm on demand.
{ "mcpServers": { "tusk": { "command": "npx", "args": ["-y", "@tuskcms/mcp"] } } }No MCP? Paste this one line into any AI tool that can read a URL and edit files:
Connect this site to Tusk CMS. Read https://tuskcms.com/llms-full.txt first and follow it exactly.
Start from a template
The Tusk starter is a GitHub template: a three-page business site in plain HTML, already marked up, with the build step and Vercel and Netlify config in place. Use the template, deploy it, say “Connect this site to Tusk CMS.”, and hand it to the client. Then reshape it into their site.
Starting from a prompt instead? Ask your tool to build the site with the marks in from the start: the first-prompt version works in any builder.
What the client gets
- Their own login. They open an editor with a live preview of their real website beside the fields you marked, click a heading, a paragraph, a photo or a download, change it, and press Publish.
- Nothing of yours. No repo, no FTP, no code, no layout or styles. What you did not mark cannot be edited.
- History of the last 30 days, with any version restored as a draft, so a bad edit is never permanent.
- A Publish that reaches the live site through your own host, and a dashboard that tells you both whether it did.
What you keep
- The codebase, the hosting and the deploy. Tusk triggers a deploy hook you own, and that link, encrypted, is all it holds of your host.
- A static site that stays static: published content and images are written into your build by two zero-dependency scripts. The deployed site never calls Tusk.
- The retainer. The client pays you; you pay Tusk by site. Clients never pay for their login.
- The exit. Export gives you a site’s words, photos, fields and 30 days of versions as files; disconnect cuts every tie and the site keeps serving.
Questions plain HTML developers ask
I have no build step at all.
Then the two scripts are the build step: pull, apply, deploy. Cloudflare Pages or Netlify will run them on every hook. Ten lines of config.
Multiple pages, shared header and footer?
Fields are named page.field or just field for site-wide things like the phone number in the footer. One edit, every page.
Can I keep FTP hosting?
Yes, with a CI job (GitHub Actions is free) that runs the two scripts and uploads the result. Tusk only needs something it can trigger.
Also built with Astro, Framer, Claude Code? Tusk works the same way. All builders: Lovable, v0, Bolt, Replit, Claude Code, Codex, Cursor, Windsurf, Next.js, Astro, Eleventy, Framer, and any site with a build step or deploy hook.