Agents are enablers
This whole site started as pure developer hedonism.
I sat down to update my CV and, in the most predictable developer move imaginable, rebuilt my personal site instead.
The sensible version of that story is: pick a Markdown site generator, write the pages, ship the thing. I did not do that. I used the excuse to build something I have wanted for a while: Formless, a schema-as-data app runtime.
The idea is simple: describe your app as data. The schema defines entities, fields, relationships, queries, read models, views, screens, mutations, and actions. The runtime uses that schema to give you a working app surface: local browser state, authority-backed storage, generated editing UI, generic create and patch flows, and named domain actions for behavior that needs more than CRUD.
That changes the usual stack shape. Instead of spreading the same product knowledge across a database schema, ORM models, API handlers, client state, validation, form components, labels, locale strings, and display formatting, Formless asks a more interesting question: what if the schema was allowed to carry the useful product metadata too?
So a field is not just email: text. It can know its label, validation, display behavior, editor, help copy, defaults, and where it should appear. A relationship is not just a foreign key you rediscover in every screen. It can be named runtime data. A read model is not another persisted column. It can be a display-only value computed from flat records.
That is the part that feels newly interesting in an agentic world.
Agents are much better when the system gives them a map. A codebase full of implicit conventions asks an agent to infer intent from scattered implementation details. A schema-as-data runtime gives it a structured description of what exists, what is editable, which relationships matter, and which commands are valid. The metadata is not just for rendering UI. It is a shared contract for humans, runtime code, and agents.
This site is the first dogfood pass. The CMS behind it is built in Formless. The Site schema has block and placement records; public pages render from a tree projection; posts and projects are content blocks with dates, routes, summaries, and child markdown placements. I get an admin UI mostly because the runtime can read the schema and generate one.
It is still a toy. There are lots of missing grown-up things: users, permissions, richer publishing, imports, a media library, dashboards, all of that. But it works well enough to write this post inside the thing itself, which is exactly the unreasonable loop I wanted.
This is the first note in a series. Next I want to dig into the data model, the generated UI, the local-first browser replica and Durable Object authority split, and what schema-driven apps make possible when agents can use the schema as a real interface instead of a pile of hints.