Achar 2.0 is out — GROQ projections, draft previews, and a schema-aware studio.

The content operating system

Achar is a content lake, a query language, and a studio: one place to model your content, one API to read it from anywhere, and a publishing flow your editors can follow without a deploy.

No credit card. A dataset, a schema and a studio in about five minutes.

Trusted by teams at

  • Northwind Media
  • Kestrel Health
  • Lantern Financial
  • Fjord Commerce
  • Atlas Robotics
  • Meridian Travel

The core idea

Content is data. Everything else follows from that.

A page builder stores the page. Achar stores the thing the page is about — as a document with a type, shaped by a schema your team owns. Write it once in the studio, then query it from a website, an app, a print pipeline or an agent, each asking for exactly the fields it needs.

The type definition

A schema is a TypeScript-shaped declaration, not a form builder. It is versioned with the project, it is what the studio draws its editors from, and it is what a document is validated against on the way in.

How it works
import { defineType, defineField } from '@achar/schema'

export const post = defineType({
  name: 'post',
  title: 'Post',
  kind: 'document',
  fields: [
    defineField({ name: 'title', title: 'Title', type: 'string', required: true }),
    defineField({ name: 'slug', title: 'Slug', type: 'slug', required: true }),
    defineField({ name: 'body', title: 'Body', type: 'portableText' }),
    defineField({ name: 'author', title: 'Author', type: 'reference', to: ['author'] }),
    defineField({ name: 'categories', title: 'Categories', type: 'array', of: [
      defineField({ name: 'category', type: 'reference', to: ['category'] }),
    ] }),
  ],
})

The rest of the platform is the consequence: a lake that holds it, a studio that authors it, and a CDN that delivers it.

The platform

Everything between a draft and a hundred channels.

Twelve pieces, one system. They are listed in the order a project grows into them — the first three are what you need on day one, and the last are what you need once there are three frontends and a migration.

Content

Model it, author it, and keep what you are working on away from what is live.

One content lake
Every document, asset and schema in one dataset, addressable by id and queryable from any surface. Nothing is authored outside a dataset, so there is never a second place to look.
Structured documents
A document is an array of fields with a type, not a row with columns. Add a field to the schema and every surface can read it without a migration.
Portable Text
Rich text as an array of blocks and spans — renderable on the web, in an app, in an email, and countable in a query when something has to be audited.
Asset pipeline
Uploads go straight to storage with a presigned URL, never through the API. Images are served from a CDN with transform parameters decided at read time.

Platform

Query it, deliver it at the edge, and keep every channel reading the same source.

GROQ queries
Filter, order, slice, dereference and project in one query string. One read paints a page, and the query is the same one your editor can run in the studio.
Drafts and revisions
A draft is its own row, so it can be edited for a week while the site keeps serving what was published. Publishing is one reversible write with a revision on each side.
Roles and API tokens
Admins, editors and viewers per project, plus scoped tokens for machines — one dataset each, revocable one at a time, and never shown twice.
Global delivery
Content and media are served from an edge CDN, with cache purges fired from the publish event rather than from a deploy pipeline somebody has to remember to run.
Webhooks and pipelines
Tell the search index, the static build and the partner feed what changed, with a GROQ filter and a projection so each listener gets only what it asked for.

AI

Hand agents and models the same typed content your pages are rendered from.

Schema-aware drafting
Your schema is the prompt: drafting, tagging and summarising all run against fields that already have a shape, a description and a closed set of options.
Semantic search
Find the document that says a thing, not the document that contains a word — including the ones written before you joined, which is where the useful ones always are.
Translation drafts
Locales are fields on the document, and a model can fill them into a draft. A person still reads it before it is published, and the record says who did.

The studio

A studio that draws itself from your schema

There is no page builder here and no field to drag. The schema declares what a post is, and the studio renders the editor for it — the right control for a slug, a reference picker that searches the documents it points at, a rich-text field that produces Portable Text rather than HTML. Change the schema and the studio changes with it, for everyone, immediately.

  • Drafts and published rows are separate documents, so a week of editing never touches what is live.
  • Publishing is a step somebody takes, with an intent, not a side effect of typing.
  • Required fields are required at the write, so a document cannot be saved half-shaped.

Real-time collaboration

Several editors, one document, no locking

Presence and document updates arrive over one connection, so two people can work in the same post and see each other's typing settle as it is committed. Nobody checks a document out, nobody overwrites anybody, and the history of who changed which field is a thing you can read rather than a thing you reconstruct.

  • Field-level conflict resolution, with revisions to compare against.
  • Presence that says who is in the document and where they are in it.
  • A review step for the person who is allowed to publish.

Delivery

Reads served from the edge, in one round trip

Every query is answered from a cache in front of the API, keyed by the query and the perspective it was asked at. A published page is bytes from the nearest edge; a preview is the draft, uncached, for exactly the person who is allowed to see it. Invalidate by tag when a document is published, and the pages that read it — and only those — are rebuilt.

  • Under 50 ms at p95 for a cached query, from anywhere on the network.
  • Tag-based invalidation driven by the publish webhook, not a full rebuild.
  • Assets on their own distribution, transformed on request rather than at upload.

Customers

Teams who stopped maintaining four copies of the same sentence.

Every story here is a document in the dataset this page was rendered from.

We moved eleven mastheads into one lake and stopped maintaining eleven integrations. The part I did not expect is that our editors started reusing things — a chart, a glossary entry, a bio — because for the first time they could find them.
Northwind MediaDana Whitmore, VP Content OperationsMedia and publishing
4xFaster publishing
41,000Documents migrated
9Integrations retired
Clinical content is reviewed by people who bill by the hour, so every round trip costs real money. Publishing against a schema means the content arrives at review complete instead of arriving to be corrected.
Kestrel HealthDr Amina Haddad, Director of Clinical ContentHealthcare
2Review cycles removed
6 days → 1Time to publish
0Audit findings
Every disclosure on our site is a document with a review date and a named owner. Modelling that as content rather than as a page template is what finally made the audit a query instead of a spreadsheet.
Lantern FinancialMarcus Bell, Head of DigitalFinancial services
12,400Disclosures under management
3 weeks → 2 daysAudit preparation
0Missed review dates
  • 18 msMedian cached query, from the nearest edge
  • 99.99%Content delivery availability, trailing 12 months
  • 4BDocuments served from Achar datasets this year
  • 2,400+Teams publishing through a content lake

Integrations

The content goes where the work already happens.

Achar is a query endpoint and a webhook, so the interesting question is never whether it integrates — it is what you point at it. These are the ones teams ask about first.

Frameworks
Next.js
Read a dataset from a server component with the typed client, and let ISR revalidate on the publish webhook instead of on a timer.
Deployment
Vercel
Deploy previews that read the staging dataset, and a production build that is purged by the same event that publishes the content.
Automation
GitHub Actions
Run the seed script against a scratch dataset on every pull request, so a schema change is reviewed with the content it affects.
Collaboration
Slack
A channel told when a document is published, with the projection shaped to the three fields a reader of the message needs.
Design
Figma
Keep the copy in a design file and the copy in the lake the same, by anchoring a frame to a document and diffing on export.
Commerce
Shopify
Product storytelling lives in the lake and the catalogue lives in Shopify; a page reads both and neither has to be copied into the other.
Search
Algolia
A webhook projection feeds the index with exactly the fields the search results draw, so an unpublished draft never becomes searchable.
Analytics
Snowflake
Nightly exports of a dataset into the warehouse, so content can be joined against traffic and revenue by people who will never open the studio.

Pricing

Priced by documents, not by editors.

Invite the whole company to the studio on every plan. What a plan changes is how much content you store, how much bandwidth you serve, and how much of a conversation you get to have with us about it.

Compare all plans
Free
Freeone editor, forever
For a side project, a prototype, or the first honest test of whether this fits.
  • One editor and two datasets
  • 1,000 documents
  • GROQ queries and the HTTP API
  • Asset pipeline with CDN delivery
  • Community support
Growth
Most popular
$29per editor / month
For a team that publishes every week and wants the workflow enforced by the tool.
  • Unlimited editors and datasets
  • 50,000 documents
  • Draft previews and revision history
  • Webhooks with filters and projections
  • Roles, invitations and API tokens
  • Email support in one business day
Scale
$99per editor / month
For several products on one lake, with the audit trail and the uptime to match.
  • Everything in Growth
  • Unlimited documents
  • Audit log export
  • Custom webhook projections and replay
  • 99.95% uptime commitment
  • Priority support with a two-hour response

Questions

The things teams ask before they move.

Everything below is a document in the dataset this page renders — the question, the answer, and the order they appear in.

  • Achar is a content lake with a query language and a studio. You model your content as documents with a schema, author them in the studio, and read them from any surface with one HTTP API. The schema is shared by all three, so the studio draws its form from the same definition your queries run against.

Your content already wants to be structured.

Make a project, define a type, publish a document. The first three things you need are free, and the query you write for them is the same query you will be writing in three years.