Mira

Pages that move.

An open source static site framework. Write Markdown, ship plain HTML that loads fast, animates between pages, and reads as well to agents as it does to people.

  • 1 KB runtime
  • 0 KB app JavaScript
  • Any static host

Elements travel between pages.

Add mira-morph to a title or image and it animates into its match on the next page. Back plays it in reverse.

Ready before the click.

Links prefetch on hover and prerender on press, so the next page is usually already there.

A Markdown copy of every page.

Add .md to any URL. Agents get clean text with a canonical link; people get the designed page.

Styled from the first build.

A theme, type scale, and components come with every project. Change them in mira.config.json.

Ships anywhere static files do.

mira build writes one folder of plain HTML, Markdown, and assets. Name your hosts in mira.config.json and each build writes their own config, so headers, clean URLs, the 404 page, and redirects behave the same on all of them. Firebase, Render, Azure, and Deno Deploy are covered too.

routes/ · content/ mira build dist/
Vercelvercel.json
Netlifynetlify.toml
Cloudflare Pageswrangler.toml
GitHub PagesActions workflow
Amazon S3CloudFront function
Docker and nginxDockerfile, nginx.conf

Your site, served to agents.

Run mira mcp and any MCP client can list, search, and read every page, rebuilt fresh for each call. Add it to a client with npx @miraframework/mira mcp. Every page also has a Markdown twin, and each build writes llms.txt and a JSON search index.

$ mira mcp --root .
serving over stdio

tools/list
  list_pages  every URL and title
  read_page   one page as Markdown
  search      best matches, with snippets

Also in every build.

Native page transitions

Shared elements morph between pages with one attribute. Back plays the motion in reverse.

mira-morph

Typed content

Frontmatter is checked against a schema and fails with the exact file and line.

collections

Checks before deploy

Broken links, missing assets, and duplicate URLs stop the build, not the reader.

mira build

Built in search

A build time index and a search box that loads only on pages that use it.

<mira-search>

Strict security policy

Every page carries a content security policy built from hashes of its own code.

sha256

Errors you can read

Build and runtime errors open on the page with the source line and a copy button.

mira dev

Size budgets

A page over its size budget fails the build. The runtime is about 1 KB gzipped, against a hard 2 KB limit.

page_kb

Instant navigation

Links prefetch on hover and prerender on press, so the next page is ready first.

Speculation Rules

Bring your site with you.

mira migrate moves a Next.js, Astro, Hugo, Jekyll, Docusaurus, Gatsby, Eleventy, or VitePress site into a new Mira project. It reads the old site without running any of it, keeps every URL with redirects, and lists anything that needs a person, with the file and line.

  • Next.js
  • Astro
  • Hugo
  • Jekyll
  • Docusaurus
  • Gatsby
  • Eleventy
  • VitePress
$ mira migrate ./docusaurus ./site
from Docusaurus
  pages            10
  blog entries     4
  static files     8
  redirects        4
  to review        1

migrated to ./site, and it builds: 17 pages

Start a site in one command.

npm create mira@latest