---
title: What is Hollware
description: A headless CMS on Cloudflare Workers that agents write to over MCP, with contracts that check every write.
section: start
order: 1
---

# What is Hollware

Hollware is an open-source headless CMS that runs on Cloudflare Workers. Your agents write content to it over MCP, your contracts check every write, and your sites read what you publish.

It is built for a team where agents write and people decide: an agent drafts a post, Hollware tells it exactly what breaks your rules and how to fix it, and a person approves what goes live.

## How it fits together

- **The structure** says what your content is: the schema of the frontmatter, the routes of each locale, the components a page may use, and the rules every write must follow. It lives in the database with your content, and you change it in the admin, or an agent does over MCP, with no deploy.
- **Agents** connect to `/mcp` with a token, or through OAuth. They read the structure with `describe_site`, then write drafts, validate them and publish.
- **Contracts** run on every write. A draft that breaks one is still saved, with a verdict that names each problem and its fix, so an agent can correct it without guessing.
- **D1** keeps every entry and every revision. Markdown goes in and comes out byte for byte.
- **Sites** read published content over a service binding, with no network and no token, or over HTTP with a read token.
- **People** sign in to the admin at `/admin/` with a passkey, review what agents ask to publish, and manage tokens.

## The packages

Hollware is a few packages, all of the same version, published on npm with provenance:

| Package | What it does |
| --- | --- |
| [`create-hollware`](/docs/install/) | Makes a project: `npm create hollware`. |
| [`hollware`](/docs/cli/) | The CLI of a project: run it locally, deploy, migrate, tokens, import, export, backups. |
| `@hollware/server` | The Worker: MCP, the read API, RPC, the admin's API, OAuth and passkeys, D1. A project's `src/index.ts` is `createHollware()`. |
| `@hollware/admin` | The admin at `/admin/`, built and served by the Worker. |
| `@hollware/core` | Contracts, the Markdown pipeline and the operations, shared by the server and the CLI. |
| `@hollware/client` | Reads Hollware from any JavaScript: over a service binding or the read API, and verifies webhooks. |
| [`@hollware/nuxt`](/docs/nuxt/) | A Nuxt module: composables, `<HollwareContent>` and `<HollwareImage>`, previews and a cache Hollware purges. |
| [`@hollware/astro`](/docs/astro/) | Astro loaders, live or at build time, and `HollwareContent.astro` and `HollwareImage.astro`. |
| [`@hollware/react`](/docs/react/) | For React Router, Next.js or TanStack Start: server helpers, `<HollwareContent>` and `<HollwareImage>`. |
| [`@hollware/vue`](/docs/vue/) | For Vue 3 without Nuxt: components and composables, on a server or in the browser. |
| [`@hollware/agents`](/docs/agents/) | Agents of your own that review, translate and audit, and never publish. |

A project depends on `hollware`, `@hollware/server` and `@hollware/admin`; your site, on the package of its framework.

## What it is not

Hollware does not render your site. It has no themes and no page builder: your site is yours, in any framework, and reads the content it needs. It also is not a hosted service. It runs on your own Cloudflare account, from a project you own.

## Next

Create your first project in the [quickstart](/docs/quickstart/).
