Features · Schema as code

Schemas belong in code.

Collections in TypeScript. Diffed before push. Types for your app.

myna/posts.ts
import { collection, field } from "@myna-sh/sdk/schema";

export default collection({
  name: "posts",
  visibility: "public",
  titleField: "title",
  path: "/blog/{slug}",
  fields: {
    title: field.text({ required: true, maxLength: 120 }),
    slug: field.slug({ from: "title", required: true }),
    body: field.markdown({ required: true }),
    cover: field.asset({ allowed: ["image/*"] }),
    publishedAt: field.datetime(),
  },
});

TypeScript DSL

Your schema is a file in your repo.

Versioned in git, reviewed in pull requests, read by your agent like any other code.

The CLI shows the diff first.

A destructive change is refused unless you say so. Then generate types for your app from the same file.

One file drives the editor, the validation, and your types.

generated editor
The dashboard renders the editor from your schema.
validation
Enforced in the dashboard, API, CLI, and MCP alike.
visibility
Public or private. Private never reaches the public API.
typed reads
Entries come back typed in your app.

Give your agent something to work with.

Free to start, no card required. Sign in with GitHub, enable the products you want, and point your agent at them.