Notice: Kyro CMS is currently in active development. It has not reached a stable v1.0 release and is not yet fully ready for production use.
Learn more →Stop writing boilerplate. Kyro turns your TypeScript schema into REST, GraphQL, tRPC & WebSocket APIs — plus a full admin dashboard, automatically.


Built with tools you are already familiar with.
Production-ready out of the box. From local SQLite to global edge deployments.
Define collections, fields, and relations with full type inference. No magic strings, no surprises.
{
slug: 'posts',
label: 'Posts',
fields: [
{ name: 'title', type: 'text', required: true },
{ name: 'body', type: 'richtext' },
{ name: 'cover', type: 'upload', relationTo: 'media' },
{ name: 'tags', type: 'relationship', relationTo: 'tags', hasMany: true },
]
}REST, GraphQL, tRPC & WebSocket — all auto-generated.
Unified schema across SQLite, Postgres & Mongo. Swap engines in config.
A fully featured admin panel generated directly from your schema. No configuration needed.
Primitives, rich text, media, relationships, layout fields — every shape of content covered.
Define your collections once — Kyro generates REST, GraphQL, tRPC, and WebSocket APIs automatically. No extra config, no code generation step.
// Fetch all published posts
const res = await fetch('/api/posts?status=published')
const { data, meta } = await res.json()
// Create a new post
await fetch('/api/posts', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
title: 'Hello World',
status: 'draft',
author: 'user_01'
})
})

A layered architecture that cleanly separates your schema from the adapter, making database migrations painless.
One command. Full-featured headless CMS with auto-generated admin, 4 API protocols, and multi-database support — no lock-in.
~$pnpm create @kyro-cms@latest