headless cms · typed sdk

Content API,
typed end to end.

Define your content schema once. The API and a fully typed tRPC client are generated for you. No hand-written API types, ever.

Runs many production projects today, including the ArmaTerra, Helion Research and KangaCoders sites.

your-app
$ bunx gemsync
 gemRouter.ts written (4 collections, fully typed)

const gem = createGemClient<GemRouter>({ url, key })
const posts = await gem.tables.posts.all({ limit: 10 })
//    ^? posts: Post[]  ::  typed from your schema

Every headless CMS hands you a JSON API
and leaves the types to you.

Contentful and Hygraph start at $199–300 a month and gate locales behind upgrades. Strapi and Payload are cheaper, but self-hosting them means running a backend per client site. Supabase types your database tables, not your content model.

An agency with ten client sites ends up maintaining ten sets of hand-written content types that drift out of sync the moment an editor renames a field. Gem0 deletes that entire category of work: the types are generated from the schema, so they can't drift.

from schema to shipped

How it works

  1. 01

    Define your schema

    Collections built from six field primitives, with modifiers like translatable and arrayOf and per-field validations.

  2. 02

    Run GemSync

    It pulls a generated gemRouter.ts from your project’s API. Types included, nothing hand-written.

  3. 03

    Import the client

    createGemClient for plain TS, React Query hooks via sdk-react, a Next.js wrapper via sdk-next. Every query and mutation is typed against your actual schema.

  4. 04

    Change the schema, rerun GemSync

    The compiler tells you exactly which components broke. That’s the whole upgrade path.

Why Gem0

Typed end to end
Sanity and Contentful return untyped JSON or need codegen add-ons. With Gem0 the types are the product: schema, validation, client and hooks all speak the same generated contract.
Built for agencies
One company account holds sub-companies and projects, so a portfolio of client sites lives on one invoice. Per-project API keys with expiry and revocation, and an audit trail on every change.
EU data posture
EU-hosted, operated by KangaCoders BV (Belgium). DPA on Agency and Enterprise tiers; Enterprise can run a dedicated instance.

from €0

Pricing

The typed SDK and codegen are included on every tier, Free included.

Free

€0

Everything you need to build. Pay when you ship.

  • 1 project
  • 5,000 documents / project
  • 100k API requests / mo
  • 500 MB assets
  • 2 seats, 2 locales

Solo

€29/mo

One person, real projects.

  • 3 projects (+€10 each)
  • 50,000 documents / project
  • 1M API requests / mo
  • 10 GB assets
  • 5 seats, 5 locales
  • Weekly backups

Enterprise

from €299/mo

A dedicated instance, with an SLA behind it.

  • Custom limits
  • Dedicated instance
  • SSO + DPA + SLA
  • Restore-time commitments
  • Annual billing

Self-serve signup isn't live yet: onboarding is currently by conversation, which at this stage we prefer. info@gem0.dev

Where it stands

Gem0 runs many real customer projects in production today, and the platform is under active development.

Roadmap, not shipping today: Gem0 Studio, a client-facing workspace where an AI agent designs the schema and an Astro engine previews and publishes the site with every change versioned in git. And AI on the content itself: auto-translation of translatable fields, semantic search, and an MCP server so coding agents can operate your CMS directly.