Skip to content

Under developmentMica is experimental at v0.10.0 and not ready for production.Follow the releases.

Docs/Scope and non-goals

Start here

Scope and non-goals

What Mica does, what it does not do and how to work without it, how it compares with other Git-based editors, and how to undo a publish.

6 min read

Mica is small on purpose. This page tells you what it does, what it does not do, and how to work without the missing parts. Read it before you choose Mica.

What Mica does

  • It gives editors forms for the content model that you write in TypeScript.
  • It keeps the content as JSON, Markdoc and media files in your Git repository. It has no database.
  • It saves changes as files that are not committed yet, and Publish makes one commit of the changes that the editor chooses.
  • It runs on your machine with npx, with no sign-in, or as one container behind your identity provider.
  • Your Astro build reads the files. The website does not call Mica.

One Mica serves one site and one branch.

What Mica does not do

Not in MicaHow to work without it
A preview of changes before PublishWith the local editor, run astro dev next to it. For a self-hosted Mica, point a second Mica at a staging branch, and let your host build that branch.
RolesEach editor that your identity provider admits can do everything, Publish included. Admit only the people who may publish. For a review step, use a staging branch.
Approval workflowsPoint a second Mica at a staging branch. Review and merge it on your Git host.
Scheduled publishingPublish to a branch, and let a scheduled CI job merge it.
History and undo in the editorGit has the history. See "Undo a publish" at the end of this page.
Languages as a settingUse one of the two patterns in Several languages.
An image inside a line of text, a table with aligned columns or with a list in a cellEditors add images on a line of their own and tables with one line of text in each cell. A field that has the other forms already is read-only in the editor.
A page builder with blocks of different kindsA repeater() has one shape for each item. Use a select() in the item for its kind, or several repeaters.
A branch switcherRun one Mica for each branch.
Rename of a media fileUpload the file again, and change the entries that use it.
More than one siteRun one Mica for each site.

Mica also has no content API, no GraphQL, no build webhook, no media server and no plugins. A push starts your build.

Most of these can come in a later version without a breaking change. The reasons are in decisions.md, under "Deferred scope".

Limits

Mica 1.0 is tested at these numbers. Above them, Mica can work, but nobody measured it.

  • 1,000 entries in one collection.
  • 5,000 files in the content root.
  • 5 editors at the same time.

Other limits:

  • A sortable collection can have at most 2,000 entries in its order.
  • An uploaded file is at most MICA_MAX_UPLOAD_BYTES, 25 MB by default.

Compared with other editors

The table compares Mica with other editors that keep content in Git. It shows what their documentation said in October 2026. These products change often, so read their documentation before you decide.

MicaDecap CMSTinaCMSKeystaticPages CMSCloudCannon
Content as files in your Git repositoryYesYesYesYesYes, GitHub onlyYes
Runs with no service of the vendorYesYes, with your own OAuth setupYes, with your own database and sign-inYes, with your own GitHub AppYes, with PostgreSQL and your own GitHub AppNo
Needs a databaseNoNoYes, as an indexNoYes, for users and sessionsVendor cloud
LicenceMITMITApache-2.0MITMITProprietary
Model written inTypeScriptYAML or JavaScriptTypeScriptTypeScriptYAMLYAML or JSON, or a UI
Preview while editingNoYesYesPartlyNoYes
Editing on the pageNoNoYesNoNoYes
Languages as a settingNoYesPartlyNot documentedNot documentedPartly
RolesNoNoPaid plansNoPartlyPaid plans
Review before publishingWith a staging branchYesPaid plansBranchesBranchesPaid plans
Package for AstroYesNoYesYesNoYes

Mica is for a team that wants the content model in code, the content in Git with no database, and an editor that it can run itself with one container. If you need on-page editing, a preview of drafts or roles today, one of the other products fits better.

Undo a publish

Each publish is one commit with the line Published-with: Mica. To undo it, revert that commit on your machine:

git pull
git log --oneline --grep "Published-with: Mica"
git revert <commit>
git push

The push starts your build, as a publish does. A self-hosted Mica gets the revert at its next sync, and editors see it in the editor. A revert undoes the whole publish. To undo only one entry, change it in the editor and publish again.