Technology · for developers and agencies

Websites as typed code. A CMS derived from it.

Your agent writes the site in TypeScript on @unrigid/sdk. unrigid type-checks every build, refuses unsafe code, keeps every version, and gives your editors a CMS built from the content types the site declares. Publishing waits for a person.

Connect ClaudeTalk to us

  • TypeScript only
  • One isolated runtime and database per site
  • Nothing publishes without approval

[ 01 / 08 ]

From prompt to published.

Every change takes the same path. The agent can call tools; only the build decides what is valid, and only a person decides what goes live.

  1. 01agentClaude calls unrigid's tools over MCP, as the person who connected it, within their role on the site.
  2. 02buildType-checks the site and runs the build rules. Any finding stops the build.
  3. 03versionA passing build becomes a version with its own preview URL.
  4. 04approvalIn ask mode an owner or editor approves the publish.
  5. 05edgeThe version is served from a global edge network.
  6. 06siteEach site runs in its own runtime with its own database.

[ 02 / 08 ]

The SDK: declare, render, check, publish.

Sites import only @unrigid/sdk, hono, hono/jsx, zod and their own files. The site exports defineSite({...}); the builder writes the entry point.

src/content.ts
export const Dish = contentType("Dish", {
  name: f.text({ label: "Dish", required: true }),
  price: f.number({ label: "Price" }),
  veg: f.boolean({ label: "Vegetarian" }),
  photo: f.image({ label: "Photo" }),
});

One declaration gives the TypeScript type, save-time validation and the CMS form.

src/pages/menu.tsx
export const Menu = page(async ({ content }) => {
  const dishes = await content.list<DishItem>("dishes", {
    orderBy: { field: "order" },
  });
  return <Layout>{dishes.items.map((d) => <Row dish={d.data} />)}</Layout>;
});

Pages are Hono JSX, rendered on the server. Rich text renders only through <RichText html={…} />.

preview
$ preview
  type-check      ok
  build rules     ok
  version         v1793777925142-f4pvqx
  preview         https://…--your-site.unrigid.in

A build with findings creates no version and no preview.

publish
$ publish v1793777925142-f4pvqx
  mode            ask
  approval        waiting for an owner
  content         drafts saved for this version go live with it

Content written for new code goes live in the same publish.

[ 03 / 08 ]

Content types become the CMS.

Your agent writes the left. Your editors get the right: typed fields, drafts, scheduled publishing, history, and an undo strip on every change the agent made.

src/content.ts
export const Dish = contentType("Dish", {
  name: f.text({ label: "Dish", required: true }),
  price: f.number({ label: "Price" }),
  veg: f.boolean({ label: "Vegetarian" }),
  section: f.text({ label: "Menu section" }),
  photo: f.image({ label: "Photo" }),
});
Fields
  • Dishf.text · required
  • Pricef.number
  • Vegetarianf.boolean
  • Menu sectionf.text
  • Photof.image
The editor, in the CMS
Dish
Price
Vegetarian
Menu section
Photo

Claude changed: price · Undo

  • Collections for many items, globals for one (a page's words, the header menu).
  • Fields nest without limit: objects, lists of objects, references.
  • Drafts show on previews only; content written for new code goes live with that code.
  • Owner, editor and viewer roles on each site; sharing is per site.

[ 04 / 08 ]

What the build refuses.

Unsafe code is a build error, not a warning. The preview isn't created, so it can never be published.

[ 05 / 08 ]

Isolation and data.

Each site is its own unit: code, runtime, database and media. Nothing is shared between sites except the platform that serves them.

  • runtime per site

    Isolated runtime

    Each site runs as its own script with its own bindings. One site can't reach another's data.

  • database per site

    Own database

    Each site has its own database, placed in the region chosen when the site is created.

  • forms · retention you set

    Forms with spam checks

    Visitors submit to the platform, never to site code: validated, spam-checked, stored, and emailed to approved recipients.

  • no-analytics-code

    Consent before analytics

    No analytics code in sites. When an owner turns analytics on, the platform adds it behind a consent banner.

  • certificates managed

    Custom domains and HTTPS

    Every site has an unrigid.in address; owners connect up to five domains with one DNS record each.

  • owner · editor · viewer

    Roles and per-site sharing

    Access is per site: owner, editor or viewer. Transfers wait for the receiving owner to accept.

[ 06 / 08 ]

Every build is a version. Publishing waits for a person.

The agent works within the role of the person who connected it. What it may do on its own is the site's publishing mode, set by an owner.

  1. Ask

    The person describes the change to their agent.

  2. Build and check

    Type-check and build rules; findings stop here.

  3. Preview

    A versioned preview URL, with draft content.

  4. Approve

    An owner or editor approves, in Claude or in the app.

  5. Publish

    The version and its drafts go live together.

  6. Roll back

    Any earlier version, in one step.

Ask
Every publish waits for a person's approval. The default.
Autonomous
Publishes go live within the site's rules.
Drafts only
Save and preview; never publish.

[ 07 / 08 ]

Connect your agent.

unrigid is an MCP server. Add it once; the agent signs in as you, to the account you choose. Claude connects today; Cursor and Codex connectors are coming, and we won't list them as available until they are.

  • Available nowClaude
  • Coming soonCursor
  • Coming soonCodex
  1. Add the connector

    In Claude: Settings → Connectors → Add custom connector.

    https://mcp.unrigid.ai/mcp
  2. Sign in

    Enter your email and the 6-digit code; choose the account.

  3. Or from a terminal

    In Claude Code:

    claude mcp add --transport http unrigid https://mcp.unrigid.ai/mcp

Prompts to try

  • Start a site from the restaurant starter and make it a bakery.
  • Add a page for cake orders with a form that asks for the date.
  • Make the menu's prices editable in the CMS.
  • Show me the preview, then ask me to publish.

[ 08 / 08 ]

Open-source starters.

Every starter is a complete unrigid site, Apache-2.0 on GitHub: read the code, then start from it.

Point your agent at unrigid.

Building sites for clients? Per-site sharing, roles and transfers are built in. Talk to us.

Connect ClaudeOpen the app (opens in a new tab)

Connector https://mcp.unrigid.ai/mcp