Self-hosted content platform
Run your site by talking to it.
Runs on your machine. One folder — copy it, version it, hand it over. Every admin capability is a tool an agent can call.
No npm package yet · clone and run from source, then the quickstart
One capability, two doors
| A person opens | An agent calls |
|---|---|
| Pages › Edit HTML | pages_write_html |
| Forms › Submissions | forms_list_submissions |
| SEO › Sitemap | seo_regenerate_sitemap |
| Comments › Queue | comments_approve_comment |
| Themes › Files | theme_read_file |
01 / The premise
Most platforms bolt a chatbot onto the admin.
Tovu hands over the admin itself.
Not screen-reading. Same operations, same permissions, same history.
Can it do that? is not a roadmap question. If it is in the admin, it is in the toolset — no integration to write.
02 / The ledger
What the site can do, it can also be told to do.
Each is a screen, and a set of tools.
- Media
- Uploads, renditions, image transforms.
- Forms
- Definitions and submissions.
- Members
- Visitor accounts, magic-link sign-in.
- Newsletter
- Lists, double opt-in, campaigns, send log.
- Comments
- Moderation queue, spam handling, per-site settings.
- Redirects
- Rules, hit counts, bulk import.
- SEO
- Per-entry overrides, site-wide settings, sitemap regeneration.
- Taxonomy
- Taxonomies, terms, tagging.
- Widgets
- Instances, region bindings, inline embeds.
- Analytics
- Page views and events, in your own database.
- Change sets
- Grouped edit history you can revert.
- Deployments
- Static export, Dockerfile, publish targets.
- External MCP
- Third-party MCP servers.
- API keys
- Scoped, revocable keys.
- Agent plugins
- Installable agent instructions and tools.
03 / What is missing
The toolset has gaps on purpose.
The destructive operations were never handed over. Each omission is in the tool catalog, with its reason.
-
Comments
Every moderation step is reversible. Nothing in the toolset erases a comment.
-
Members
members_disableis a soft disable. No hard-delete tool exists. -
Forms
Disabling is the only retirement path an agent has.
-
Migrations & imports
database_execute_migrate_forwardandredirects_importare marked never agent-callable. Human confirmation only. -
Publishing
Publishing and pushing both stop at a confirmation dialog. The human presses the button.
04 / Themes
Four tiers of theme, one contract.
A theme is a folder validated against a schema. Pick the tier by how much power the author needs.
-
declarative
JSON block trees. No logic, nothing to sandbox.
Tier 1 — data only -
templated
LiquidJS in a sandboxed worker. Template logic, no JavaScript.
Tier 2 — sandboxed logic -
handlebars
The same sandbox, in Handlebars syntax.
Tier 3 — sandboxed logic -
static
Plain HTML, CSS and JavaScript. This page is rendered through one.
Tier 4 — full control
A fifth tier, code, is reserved for signed plugin JavaScript; no themes ship on it yet. Browse the catalog.
05 / Running it
It lives on your machine, in one folder.
Database, uploads, themes and plugins, all in the same directory.
tovu init my-site
tovu serve my-site # site and admin on one port
tovu export my-site # static export
tovu deploy config --target fly # or render, or railway
docker
A multi-stage Dockerfile at the repo root. The container is disposable; your content is not.
introspect
tovu introspect prints the command and tool manifest as JSON — the same one an agent reads.
06 / Start
Install it, then ask it what it can do.
Not a figure of speech. The manifest ships populated.