A headless CMS with forms built from your schema

In Tessryx, content is a set of records. A record is one item, like a menu or a product, and it has to fit a shape you described, meaning which fields it has and what each one can hold. A save that doesn't fit is turned away with the field named.

Free holds 100 records and Pro 1,000; Agency goes to 10,000. Past the limit you can still edit and unpublish, and live records keep serving.

That same description lays out the form your team edits in, so there's no admin screen to keep in step with the data. Publish a record and a copy goes up as JSON at a public address, where any site or app can read it, hosted on Tessryx or not.

Try it

A record and its public JSON

Content Studiomenu/today
Saved 07d88a9Live 07d88a9

schema daily-menu@published

Specials

This record is saved and published. Change something and save it.

Any site or app

GEThttps://corner-bakery.tessryxuserdata.com/menu/today.json

HTTP/2 200

content-type: application/json

cache-control: public, max-age=60

{
  "title": "Today's specials",
  "specials": [
    { "name": "Sourdough loaf", "price": 6.5 },
    { "name": "Cardamom bun", "price": 3.75 },
    { "name": "Seeded rye", "price": 7 }
  ]
}
A site hosted anywhere, reading that address

Today's specials

  • Sourdough loaf$6.50
  • Cardamom bun$3.75
  • Seeded rye$7.00
Runs in your browser with the editor's own checks. The address, the headers and the 404 are the real ones; on a real address a change can take up to a minute to show, because the copy is cached for 60 seconds.

How it works

  1. 01

    Your AI writes the schema

    Tell it what the content is and it writes the description in standard JSON Schema, which plenty of other tools understand too.

  2. 02

    Your team edits in Content Studio

    Each record opens in a form built from its schema, with problems marked as people type.

  3. 03

    Saving and publishing are separate

    Saving keeps your working copy. Publishing copies it to its public address, and the editor flags a record whose saved copy is newer than the live one.

  4. 04

    Pages read it however suits them

    A page can be built from a record on the server, or fetch the published JSON in the browser.

Questions

Can I query across records like a database?

There's no query language and no joins. Records work more like DynamoDB: you pick slugs and folders to suit how pages will read them, list a folder by date or name, and count what's directly in any folder. A workflow can write one item into several folders in one go (a fan-out write), so each list a page needs is already there to read.

Is there version history for records?

Not for records themselves, which keep a saved copy and a published copy. The pages, logic and schemas around them keep their last ten versions.

Under the hood

The technical details

record
One JSON document bound to a schema (its published version, or its latest draft), with a slug, name, description and a server-stamped content hash.
folders
Slug segments are folders, up to 11 deep, with exact counts of what is directly inside each one.
unversioned
A record keeps one saved copy and one published copy; there is no version history for records.

More highlights

Give your AI somewhere to build.

Free to start, no credit card. Bring the AI you already use.

Start building for free