The single-binary CMS where your content lives as plain JSON files in a folder you own. Edit in a polished admin. cp -r is your backup. git diff is your audit log. The CMS is optional infrastructure on top of files that survive without it.
Status: alpha. v1 is in active development. The bucket protocol is the public contract; the rest of the surface may move.
A headless content management system distributed as one Go binary. The binary contains the HTTP API, the admin UI, an embedded SQLite index, and everything else needed to run on a fresh server. Content lives in a bucket — a folder of plain JSON files, organised by a documented protocol. The bucket is the source of truth. The CMS is the editor on top.
You read content from your site (Astro, Next, Remix, anything) using the @clearcms/sdk npm package, or by reading the JSON files directly.
Install the latest binary:
curl -fsSL https://get.clear.io | sh
clear --helpOr with Docker:
docker run --rm -p 8080:8080 \
-v $(pwd)/bucket:/var/lib/clear/bucket \
ghcr.io/clearcms/clear:latestOpen http://localhost:8080, follow the first-run admin setup, and your bucket is ready at ./bucket.
In your site code:
npm install @clearcms/sdkimport { createClient } from "@clearcms/sdk";
const cms = createClient({ baseUrl: "http://localhost:8080" });
const posts = await cms.listItems("posts");Other content systems make a structural commitment that prevents them from offering this:
- Sanity, Contentful — content lives in their managed service.
- Payload, Strapi — content lives in your Postgres or MongoDB. Portable, but not file-system native.
- Pocketbase — content lives in a single SQLite blob. One file, but opaque without the binary.
- TinaCMS — closest, but git-coupled (every edit becomes a commit).
- WordPress — content in MySQL. Migration is famously painful.
clear commits to the inverse: your content is plain JSON files you can read, diff, copy, version-control, or walk away with at any time. The binary is replaceable; the content is yours. See docs/vision.md for the longer argument.
- A single Go binary (~25–80 MB) for macOS, Linux, and Windows
- Embedded admin UI (Vite + React, polished editing surfaces)
- File-based bucket protocol with
fsandr2adapters (githubadapter as a stretch) - Schema-first content modelling, with TypeScript codegen for the SDK
- REST HTTP API described by an OpenAPI document
@clearcms/sdkfor adopters to read content from any TypeScript site
clear is headless-only in v1. Site rendering, theme tokens, block libraries, visual page designers, plugin loaders, and multi-tenancy are all out of scope. See CLAUDE.md for the full anti-goals list.
| Path | What lives there |
|---|---|
cmd/clear/ |
Binary entry point |
internal/ |
Go server: API, bucket adapters, schema engine, SQLite index |
admin/ |
Vite + React admin SPA, embedded into the binary |
sdk/ |
@clearcms/sdk TypeScript package for adopters |
docs/ |
Vision, architecture, bucket protocol, ADR index |
examples/ |
Reference adopter sites (Astro, Next) |
A short tour is in ARCHITECTURE.md. The full version is docs/architecture.md.
- Vision — what clear is and who it is for
- Architecture — how the three layers fit together
- Bucket protocol — the public contract for content storage
- Glossary — vocabulary used across the project
- ADR index — accepted design decisions
See CONTRIBUTING.md and AGENTS.md. AI contributors should also read CLAUDE.md.
Vulnerabilities should be reported privately. See SECURITY.md.
MIT.