markstageType it. Ship it.

The visual editor for Astro sites · free to self-host Edit your site on the real page.

Writers click into your Astro site’s own design and type, like in Notion. Every save is a clean git commit in their name. No content database, no monthly bill.

Try the live demoGet it on GitHub

  • Notion-style blocks
  • AI agents through MCP
  • Content stays in git
  • Free to self-host

We compared 21 other editors. None of them lets writers edit on the real page from your own server with no database server. See the comparison

The Markstage editor on a post of the example blog with its block menu open (the “+” beside a line or “/” on an empty line opens it), each block with a small drawing of it

Writing

Writes like Notion. Looks like your site.

The block editor people already know, drawn on your real design instead of grey form fields.

/

Type “/” for any block

A searchable block menu with a small drawing of each block. Or click the “+” beside a line.

⋮⋮

Drag blocks to move them

A grip on every block: drag it, or move it up, down or to a place you pick, duplicate it or delete it.

⌘K

Find anything fast

One search box for pages, posts, the editor’s screens and its settings.

⌘V

Paste from Word

Word’s headings and lists come in as real blocks, without its office markup.

≡

An outline of the page

Every block under its heading: jump to one, fold a section, drag rows to move them.

↺

Never lose typing

A crash or a closed tab brings your words back. History keeps every saved version.

Everything the editor does for writers

Inspired by Ghost

Ghost’s calm writing, on your own design.

We studied Ghost’s editor row by row, kept what writers love, and put it on the real page.

alt

Alt text right on the image

Caption and alt text under the picture, where you see it. By default, publishing waits until every image has alt text.

photos

Stock photos, with your own key

Search Unsplash or Pexels from the media library. The photographer’s name is kept with the photo.

publish

A publish sheet that checks

What changes, the checks (links, alt text, the page on a phone), then now or at a time you pick.

Inspired by Prismic

Prismic’s page building, without the bill.

We used Prismic and left over its price and the missing path from development to live. Markstage includes what we wanted, free to self-host.

sections

A Library of sections

Reusable sections, snippets and page templates, like Prismic’s Slices. Drag one from the Library onto the live page.

Prismic: Slices

env

Local, staging, production

Promote code and content together by git merge, with checks and rules. Included and free.

Prismic: Paid option on Platinum ($675); 2 on Enterprise

release

Releases and share links

Bundle changes, preview them together with a link that expires, then publish them at once.

Prismic: Yes

edit

“Edit this page” on the live site

Signed-in editors get an edit link on the page itself. Visitors see nothing of it.

roles

Custom roles

Decide who may edit, publish or delete, down to collections, locales and single fields.

Prismic: From Medium ($150); custom on Enterprise

mcp

AI agents through MCP

Claude or any MCP client reads the site and drafts as you. It publishes only if you allow it.

Prismic: Claude and ChatGPT plugins

AI & MCP

AI that drafts. People who publish.

Bring your own AI key. Every suggestion sits next to the value it is for, and nothing is saved until a person reads it.

MCP server

An agent works with the same roles, locks and checks as the person whose token it holds, and only ever drafts.

Suggestions where you work

Alt text for an image, a search title and description, a translation draft, a summary of a promotion.

AI and MCP in Markstage

Showcase · taskrhino.ca

Built with Markstage: taskrhino.ca

Our own site is the first one written with Markstage. It moved from WordPress to a static Astro site: 158 posts, 20 pages and 2,414 images and files, every address kept. On a phone, its home page now scores 99 for speed instead of 71.

Speed score, home page on a phone
from 71 to 99
Main content shown (LCP), on a phone
from 6.8 s to 2.2 s
Home page weight, on a phone
from 902 KB to 206 KB
Files loaded, home page on a phone
from 45 to 19

Lighthouse, median of three runs, 28 and 29 October 2026: the old site live, the new one from its own build before launch, so its load times are not those of a real host.

See the before and afterRead why we built itVisit taskrhino.ca

Compare

Markstage, WordPress, Ghost, Prismic.

The rows teams decide on most, from our comparison. Each cell has its source there.

What you getMarkstageWordPressGhostPrismic
Edits on the site’s own designYes The site's own components and CSSNo Headless: written in WordPress's adminNo Headless: written in Ghost's own editorPartly Page Builder: drag sections, live preview
Content as files in gitYes No Read by REST APINo MySQL database, read by the Content APINo Hosted, read by API
Environments or stagingYes Local, staging, production; freeNot confirmed Not confirmed Partly Paid option on Platinum ($675); 2 on Enterprise
RolesYes Five built in, plus custom rolesYes Six rolesYes Contributor, Author, Editor, Administrator, OwnerPartly From Medium ($150); custom on Enterprise
What you runOne Node server next to your static siteA WordPress site (PHP with MySQL or MariaDB)A Ghost server (Node.js and MySQL 8), or Ghost(Pro)Nothing; hosted
Price to startFreeFree software; you pay for hostingFree software; Ghost(Pro) Starter $18/mo ($15 yearly)Free; Starter $10/mo per repository, yearly

See the whole comparisonAlternatives, one by one

Get started

Install in three steps

Just looking? The live demo runs the editor on the example blog in your browser, with nothing to install.

  1. Try the example blog

    Markstage is not on npm yet: install it from a clone. Clone the repo, install, and open the editor on the example blog. Needs Node.js 22.13 or newer and git.

    Then open http://127.0.0.1:18233/markstage/

    git clone https://github.com/spcaeo/markstage.git
    cd markstage && npm install
    npm run dev -w examples/blog
  2. Add it to your Astro site

    Your site needs Astro 7.4 or newer. In your site’s folder next to the clone, link the packages (they are not on npm yet), add markstage() to the integrations in astro.config.mjs and describe your collections in markstage.config.mjs.

    Read: markstage.config: every key

    npm install ../markstage/packages/core ../markstage/packages/editor ../markstage/packages/astro
  3. Run the server for your team

    Self-host the Markstage server next to your static site: one docker run with the server image, Docker compose, or systemd and nginx. Sign-in, roles, releases and backups come with it.

    Read: Markstage with Docker

Markstage is in pre-release and in active development. The clone address: https://github.com/spcaeo/markstage.git

Questions

Frequently asked questions

What is Markstage?

Markstage is a visual editor for Markdown, MDX and JSON content sites. Writers edit on the site’s own design instead of in form fields, and every save is a clean git diff of exactly what they changed (with the Markstage server, a commit in their name). Its first adapter is Astro.

Is Markstage free?

Yes. Markstage is source-available under the Elastic License 2.0: you may use, copy, change and self-host it for free, including in your business and for your clients’ sites. You may not offer it to others as a hosted or managed service without a commercial licence from Space-O Technologies.

Is the Markstage source code public?

Yes. The code is public on GitHub, free to read, change, use and self-host. Markstage is source-available, not open source in the OSI sense: it may not be resold as a hosted service without a commercial licence.

Does Markstage need a database for content?

No. Content stays as Markdown and JSON files in your git repo. One SQLite file on the server (node:sqlite, built into Node.js 22.13 and newer) holds people, sessions, the inbox, drafts in progress, trash, releases, the media index and the audit log. There is no database server to install.

Which frameworks does Markstage support?

Astro today, through the @markstage/astro integration. The core (the document model and the Markdown converter) has no framework in it, so other adapters can follow.

Will Markstage rewrite my Markdown files?

Only the blocks you change. Opening and saving a file with no edit leaves it byte for byte the same, and moving a block and moving it back gives an identical file, so a review shows exactly what moved.

Where does Markstage run?

On your own computer in astro dev, with no sign-in and on 127.0.0.1 only, and on your own server for a team: Docker compose, or systemd and nginx. There is no Markstage cloud.

Can an AI agent edit my site through Markstage?

An agent that speaks the Model Context Protocol can read the site and draft changes as the person whose token it holds. It never deletes or promotes anything, and by default a person reviews its release and puts it live. An owner or administrator may allow an agent to publish; the site’s checks and publish rules still decide.

More questions and answers

Type it. Ship it.

Made by Space-O Technologies. Free to self-host under the Elastic License 2.0.

Star Markstage on GitHubSee every feature