Client editing for Replit
Let clients edit your Replit site.
Replit Agent built the site and it runs on a Replit deployment. The client wants to edit their own copy and you would rather not hand out Replit logins or become the person who edits it for them forever.
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.
Getting the site out of Replit
- Replit projects are Git repos already: push to GitHub from the Git pane, so you have a copy Tusk can work from and a place for your own tooling.
- Keep the Replit deployment if you want, or deploy the repo on Vercel, Netlify or Cloudflare Pages for a plain deploy hook. Replit deployments rebuild on push, so a GitHub-side rebuild works too.
- Open the repo in Claude Code, Cursor, Codex or Windsurf to run the connect.
Connecting it, step by step
- Add the Tusk MCP to your agent.
- Log in once: npx @tuskcms/mcp login --site <slug>. The token is issued for this site.
- Say “Connect this site to Tusk CMS.” The agent marks the content, adds the build step, sets up the deploy hook (or commit-to-deploy for a Replit deployment), publishes and verifies.
- Invite the client to edit 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 easiest connect is the one with nothing to mark afterwards. Paste this as the first prompt in Replit, fill in the brackets, and the site is born with the marks Tusk needs. Then follow the steps above to connect it.
Build a three-page website (home, work, contact) for [business name], a [what they do] in [city]. Plain, fast, mobile-first. IMPORTANT: this site will be edited by the client through Tusk CMS, so mark every element they may change with a data-tusk attribute named page.field, e.g. <h1 data-tusk="home.heading">, <p data-tusk="home.lead">, <img data-tusk="home.hero">, <a data-tusk="contact.brochure" href="…">. Repeated cards use data-tusk-list="page.field" on the container, data-tusk-item on one card and data-tusk-field="title" on its parts. Site-wide text (phone, footer address) uses globals.field. Rules: https://tuskcms.com/llms-full.txt under “Mark the HTML”. Do not invent a CMS, database or admin page: the marks are all Tusk needs.
Already have code? The Tusk starter repo shows what a marked-up site looks like: three pages, plain HTML, the build step and deploy config already in place. Copy its patterns into yours.
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 Replit, 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 Replit developers ask
Can the client edit from inside Replit instead?
They could, but then they are in your code, your secrets and your agent history. Tusk gives them their own login that only reaches the words, photos and downloads you marked on their own site.
My site is a Flask / Express app, not static.
Tusk marks the templates. The pull step saves the published content as a file in the project, .tusk/published.json, and your templates read it, so the app serves its own files. If your text comes from a database of your own, that stays yours and is not what Tusk is for.
Does the Replit Agent need to know about Tusk?
Only if you want it to do the connect. It can: the guide at /llms-full.txt is written for any agent. Most people run the connect from Claude Code or Cursor on the same repo, which is faster.
Also built with Bolt, Lovable, Claude Code? Tusk works the same way. All builders: Lovable, v0, Bolt, Claude Code, Codex, Cursor, Windsurf, Next.js, Astro, Eleventy, Framer, plain HTML, and any site with a build step or deploy hook.