<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Nohead blog</title><description>News, releases and notes from building Nohead.</description><link>https://nohead.io</link><item><title>What’s behind the name</title><link>https://nohead.io/blog/whats-behind-the-name</link><guid isPermaLink="true">https://nohead.io/blog/whats-behind-the-name</guid><description>We went through hundreds of names to find one that’s short, a bit of fun and still available online. How hard could it be?</description><pubDate>Fri, 06 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;&lt;p&gt;There are only two hard things in Computer Science: cache invalidation and naming things.&lt;/p&gt;
&lt;p&gt;— Phil Karlton&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;One down. Ask us about the cache in a year.&lt;/p&gt;
&lt;h2&gt;How hard could it be?&lt;/h2&gt;
&lt;p&gt;We wanted something nice and short. A little fun, but not a joke. Technical enough for developers to take seriously, friendly enough to get it right away. The kind of word you type into a terminal without wincing and say in a meeting without explaining.&lt;/p&gt;
&lt;p&gt;That’s half of it. A developer product’s name also has to be available in surprisingly many namespaces:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;p&gt;domain name&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CLI command&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;npm package and scope&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ruby gem&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Python package&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Homebrew formula&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GitHub organization&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;X handle&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;It also should not step on anyone’s toes: not already someone’s company, product, library or trademark.&lt;/p&gt;
&lt;p&gt;We went through hundreds of candidates. Bless AI automation! Of course, the good ones were taken. Some almost did it, but in the end it turned out there is a popular OSS library with that name or a registered trademark.&lt;/p&gt;
&lt;h2&gt;Head·less&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;head·less&lt;/strong&gt; /ˈhɛd.ləs/ &lt;em&gt;adjective&lt;/em&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;p&gt;without a head.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;computing&lt;/em&gt; running without a screen or interface: &lt;em&gt;a headless server, a headless browser.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;of a CMS&lt;/em&gt; storing content and serving it over an API, leaving the website to you.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Riffing on the word &lt;em&gt;headless&lt;/em&gt;, we landed on Nohead. &lt;strong&gt;Loved it&lt;/strong&gt;. Checked the list: available (almost) everywhere. Card out, domain secured!&lt;/p&gt;
&lt;p&gt;The product does what a headless CMS does, and more: it’s a full-featured data layer, a superset of a CMS, if you like. You define collections of typed fields. People edit the content in the editor, while apps and agents work with it through the API, the SDKs, the CLI or the MCP server. Search, images, roles and the full history of every change are built in. That’s why neither “headless” nor “CMS” made it into the name.&lt;/p&gt;
&lt;h2&gt;The logo&lt;/h2&gt;
&lt;p&gt;The logo concept almost came bundled with the name: a figure lifting its head off. Simple, and a little fun. We’re not into mascots, but it could play one if asked.&lt;/p&gt;
&lt;h2&gt;The .io part&lt;/h2&gt;
&lt;p&gt;It was available, and it fits perfectly. In tech circles, .io reads as I/O: data in, data out. That’s what the product is about. Content goes in through the editor, the API, the CLI or an agent. Data comes out through the API to whatever shows it. And you can export all of it as plain files.&lt;/p&gt;
&lt;p&gt;No-head. One word. Capital N.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Written by a human, with an AI agent drafting through Nohead’s own &lt;a href=&quot;https://docs.nohead.io/guides/mcp&quot;&gt;MCP server&lt;/a&gt;. It lets agents read your schema, write and publish records, and compare or revert revisions, within their API key’s permissions.&lt;/em&gt;&lt;/p&gt;</content:encoded><category>Company</category></item><item><title>Why we’re building Nohead</title><link>https://nohead.io/blog/why-we-are-building-nohead</link><guid isPermaLink="true">https://nohead.io/blog/why-we-are-building-nohead</guid><description>Every content system we tried asked us to give something up: off-the-shelf CMSs, content in git, even building our own with an agent. So we’re building the one we kept wishing for.</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;&lt;p&gt;“The CMS landscape is pretty bleak.”&lt;/p&gt;
&lt;p&gt;— A teammate, discussing what to power our next project&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;It wasn’t for lack of choice: there are more content management systems than ever. It was that each came with a catch, usually one of the same few.&lt;/p&gt;
&lt;h2&gt;Off the shelf&lt;/h2&gt;
&lt;p&gt;Some had an editor people dreaded writing in. Others were pleasant enough but only understood pages and posts, so anything else had to be dressed up as a page: a product catalog, a list of job openings, the settings behind an app. Images could be uploaded, but resizing and delivering them was somebody else’s problem.&lt;/p&gt;
&lt;p&gt;The capable ones were heavy. Weeks to learn, a platform to run, and usually an opinion about the whole site: its themes, its routing, its page builder. Many of them were built for a single website. The moment an app, a script or an agent needed the same content, the API was an afterthought, or ours to build. Where there was AI at all, it was a chat box in the sidebar.&lt;/p&gt;
&lt;p&gt;And then the price: seats, locales, environments and API calls, each metered on its own, until the system holding the content cost more than the product it served.&lt;/p&gt;
&lt;h2&gt;But git?&lt;/h2&gt;
&lt;p&gt;So we did what plenty of teams do. We kept the content in the repository as Markdown files, with an open-source editing interface on top.&lt;/p&gt;
&lt;p&gt;It worked well enough to ship. Living with it was another matter. Every edit went through the same process as code: fixing a typo meant a pull request, a wait for CI, a review and then a build. Anyone with a post to publish needed write access to the codebase, and a paid seat with our host, since their commits triggered deploys.&lt;/p&gt;
&lt;p&gt;The content itself fared no better. Editors still wrote raw Markdown and front matter, where one stray colon breaks a page. A post pointed at its author by filename and trusted that the file was there; nothing checked. Images sat next to the code at whatever size they came in, and every version of every image stayed in the repository’s history for good.&lt;/p&gt;
&lt;p&gt;Git is excellent at what it was built for: code changes, made by developers. Content is changed by different people, at a different pace, for different reasons.&lt;/p&gt;
&lt;h2&gt;But vibe coding?&lt;/h2&gt;
&lt;p&gt;There’s a third option now: describe what you need to an agent and let it build you a content system. We build with agents every day, and an afternoon really does get you something that works.&lt;/p&gt;
&lt;p&gt;Something that works is the easy part. A content system lives in its details: validation, permissions, history, uploads, two people editing the same record. Around it sits the infrastructure: hosting, a database, file storage, image processing, a CDN. Then come the ways the content gets out: an API for your site and apps, a search index, access for agents. All of it has to be kept running, patched and backed up, long after that afternoon.&lt;/p&gt;
&lt;h2&gt;What we’re building instead&lt;/h2&gt;
&lt;p&gt;Nohead is the content system we kept wishing for, and more: a data layer for your apps, agents and website, structured like a database and comfortable to write in like a CMS. You define your data as &lt;strong&gt;collections&lt;/strong&gt; of typed &lt;strong&gt;fields&lt;/strong&gt;, and everything around it comes in one place:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;p&gt;a web editor for the people who write, with roles instead of repository access&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;a REST API with a public OpenAPI contract, and SDKs for TypeScript, Python and Ruby&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;a CLI and an MCP server, so scripts and coding agents work with your data too&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;webhooks, so your site rebuilds or your app reacts when content changes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;file storage behind a CDN, with images resized and converted by URL&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;search with typo tolerance and filters, through the API or straight from your site&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;version history for every record and every schema change, including which client made it&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The rule that holds it together:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Everything the editor does with content and schema can also be done through the API, the CLI, the SDKs or MCP.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The editor is just another client, and so is an agent: it uses an API key with the scopes you give it, goes through the same validation as a person, and every change it makes is attributed to it in the history.&lt;/p&gt;
&lt;p&gt;It’s also deliberately not your whole backend: no page builder, no end-user accounts or arbitrary SQL, and no built-in AI you didn’t ask for.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;&lt;p&gt;&lt;/p&gt;&lt;/th&gt;&lt;th&gt;&lt;p&gt;Off-the-shelf CMS&lt;/p&gt;&lt;/th&gt;&lt;th&gt;&lt;p&gt;Git&lt;/p&gt;&lt;/th&gt;&lt;th&gt;&lt;p&gt;Build your own&lt;/p&gt;&lt;/th&gt;&lt;th&gt;&lt;p&gt;Nohead&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Editing for non-developers&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Varies&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Repository access&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Build it&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Yes, with roles&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Data beyond pages&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Squeezed into pages&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Files, by convention&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Yes&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Any collection&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Relationships&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Varies&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Filenames, unchecked&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Build it&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Checked on save&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Images and files&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Often add-ons&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;In the repository&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Build and host&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Included&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Search&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Often basic&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;A separate service&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Build and host&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Included&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;History of every change&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Varies&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Commits&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Build it&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Content and schema&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;An API for apps and agents&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Second to the editor&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Build it&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Build it&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;API, SDKs, CLI, MCP&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;p&gt;Who keeps it running&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;Them, or you&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;You and your host&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;You&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p&gt;We do&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;From zero to an API&lt;/h2&gt;
&lt;p&gt;A backend for your data is a few commands away:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;nohead login
nohead collections create posts
nohead fields add posts title --type text --required
nohead fields add posts body --type rich-text&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And your site reads it like any other API:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;import { Nohead } from &amp;quot;@nohead/sdk&amp;quot;

const nohead = new Nohead({ richText: &amp;quot;html&amp;quot; }) // reads NOHEAD_API_KEY

for await (const post of nohead.records.list(&amp;quot;posts&amp;quot;)) {
  console.log(post.data.title)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This blog runs on exactly that. Its posts live in a Nohead project, and the site reads them at build time with a published-only key, so a draft never reaches the page.&lt;/p&gt;
&lt;h2&gt;Your data stays yours&lt;/h2&gt;
&lt;p&gt;Everything you put in can come back out. &lt;code&gt;nohead export&lt;/code&gt; writes plain files: your schema as YAML, one JSON Lines file per collection, and, if you ask, every original file and every record’s history. The SDKs and the CLI are MIT-licensed. The engines underneath are named rather than hidden: search runs on Meilisearch and images on imgproxy, so your site uses their own documented options, not a wrapper we made up.&lt;/p&gt;
&lt;h2&gt;Where to start&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://docs.nohead.io/quickstart&quot;&gt;Quickstart&lt;/a&gt;: create a project, publish a record and fetch it from your code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://nohead.io/editor&quot;&gt;The editor&lt;/a&gt;: what writing in Nohead looks like&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://nohead.io/agents&quot;&gt;Agents&lt;/a&gt;: coding agents and your own, working with your data&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://docs.nohead.io&quot;&gt;Docs&lt;/a&gt;: guides, the SDKs and the API reference&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://nohead.io/pricing&quot;&gt;Pricing&lt;/a&gt;: the plans, including Free&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Sign-up is open. If you’ve ever called the CMS landscape bleak yourself, we’d love to hear what you were looking for: write to &lt;a href=&quot;mailto:hello@nohead.io&quot;&gt;hello@nohead.io&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>Company</category></item></channel></rss>