Model your content once. Deliver it through a typed GraphQL surface with semantic search, asset collections that talk to your docs, and tenant isolation by default.
Modeling, delivery, retrieval, and operations — one stack, one set of APIs.
Compose content types from primitives, references, and localized fields. Versioned, draft-publish, environment-scoped.
Every content type gets a typed schema, per-environment endpoint, and a generated TS client. REST and SSE on the side.
Drop documents into a collection, get semantic search, RAG, and a chat surface — no glue code.
Organization → Space → Environment hierarchy, tenant-isolated by default. One install, many customers.
Direct browser uploads with short-lived signed URLs. The CDN serves optimized images on the edge.
Per-space API usage, queue stats, embedding costs, agent execution logs — surfaced where you'd actually look.
The same flow whether you're shipping a marketing site or a multi-region product catalog.
Define content types in the editor or via the schema API. Localization, references and validation come built-in.
Editors work in a fast, structured interface with draft preview, per-environment publishing, and audit history.
Pull content over GraphQL, REST, or stream live changes. Apps stay typed end-to-end.
Every content type produces a typed schema, a TS client, and a per-environment endpoint. No mocks, no manual JSON shaping.
// Typed GraphQL client — generated.
import { smartcms } from "@/lib/smartcms";
const articles = await smartcms.articles.findMany({
where: { status: "published" },
orderBy: { publishedAt: "desc" },
take: 12,
});
// semantic retrieval, same client.
const related = await smartcms.collections.search({
id: "handbook",
query: "refund policy",
limit: 5,
});Spin up a workspace, model your first content type, and pull it into your app today. The free tier covers production use.