Docs your users’ AI agents can actually read.
Shiru is the open-source alternative to Mintlify. Every page ships twice: a fast site for people, and clean Markdown with an llms.txt index for their coding agents.
Pre-launch. One email when Shiru ships, nothing else.
View on GitHubimport express from "express";import { acme } from "../lib/acme";import { archiveCustomer, markInvoicePaid } from "../billing"; export const webhooks = express.Router(); webhooks.post("/webhooks/acme", async (req, res) => { const event = acme.webhooks.verify( req.rawBody, req.header("Acme-Signature"), process.env.ACME_WEBHOOK_SECRET, ); switch (event.type) { case "invoice.paid": await markInvoicePaid(event.data.id); break; case "customer.deleted": await archiveCustomer(event.data.id); break; } res.sendStatus(204);});- Verify Acme webhook signatures in this handler.
- Read acme.shiru.sh/llms.txt12 pages
- Read acme.shiru.sh/webhooks.mdMarkdown, 2.1 KB
Acme signs every webhook with HMAC-SHA256 in the
Acme-Signatureheader. The webhooks guide says to verify it withacme.webhooks.verify()before parsing the body:Applied to webhooks.ts
Source: acme.shiru.sh/webhooks.mdconst event = acme.webhooks.verify( req.rawBody, req.header("Acme-Signature"), process.env.ACME_WEBHOOK_SECRET,);
Every page, in the format each reader wants.
People get a fast, server-rendered docs site. Agents get the same page as plain Markdown, at the same URL plus .md. No scraping, no guessing where the content starts.
Install the Acme SDK and send your first request.
$ npm install @acme/sdkKeep your API key on the server. Never ship it to the browser.
---title: Quickstartdescription: Install the SDK.--- # Quickstart Install the Acme SDK and send yourfirst request. ```shnpm install @acme/sdk``` > Keep your API key on the server.> Never ship it to the browser.# Acme > Payments API for developers. - [Quickstart](/quickstart.md)- [Webhooks](/webhooks.md)- [Errors](/errors.md)Markdown at every URL
Add
.mdto any page and get clean Markdown back.An llms.txt index
One file lists every page, so an agent finds what it needs in a single request.
Discoverable by default
Every page links to its Markdown version in its HTML head.
Write in your repo. Publish on push.
- 01
Write MDX
Markdown you already know, plus React components when a page needs them.
docsintroduction.mdxquickstart.mdxwebhooks.mdxpackage.json - 02
Push
Every published version is a Git commit. Your docs history is your repo history.
$ git pushTo github.com:acme/docs.git7d02b4e..a1f3c9e main -> mainPublished a1f3c9e - 03
Read anywhere
Your docs go live at
your-team.shiru.shfor people, and as Markdown for agents.Peopleyour-team.shiru.sh/quickstartAgents…/quickstart.md
Everything a docs site needs. Nothing you’ll fight.
MDX with your components
Import your own React components into any page.
import { Callout } from "../components"; # Webhooks <Callout type="warning"> Verify signatures before parsing the body.</Callout>WebhooksVerify signatures before parsing the body.
Your content stays in Git
Docs are files in your repository. Leaving is a
git clone.- a1f3c9eDocument webhook signaturesLive
- 7d02b4eAdd the Python quickstart1d ago
- 3c9e1f0Fix a typo in errors.mdx3d ago
- e84b2d1Split the API reference1w ago
- 0b7f6a3Import docs from the old site2w ago
Server-rendered, with a Markdown twin
Readers get HTML, not a JavaScript app. Each page takes its title and description from frontmatter and links to its Markdown version.
<head> <meta charset="utf-8"> <title>Webhooks - Acme Docs</title> <meta name="description" content="Verify and handle Acme events."> <link rel="alternate" type="text/markdown" href="/webhooks.md"></head>GitHub-flavored Markdown
Tables, task lists, strikethrough and autolinks.
Event Sent when invoice.paid A payment succeeds customer.deleted A customer is removed - Verify the signature
- Respond with
200204 - Read https://acme.shiru.sh/errors
Clean URLs and anchors
Links to
.mdxfiles become clean paths. Headings get stable anchors.See [Webhooks](./webhooks.mdx). ## Verify signaturesSee Webhooks.href="/webhooks"Verify signatures#verify-signatures
Open source, and priced per team.
Open source
The docs engine moves into the public repository before launch. Run it on your own infrastructure or use the hosted version at shiru.sh. Your content stays in your repo either way.
Follow along on GitHubPer organization, not per seat
One price for your whole team, so everyone can fix a typo. Plans and prices are published at launch.
Questions, answered.
How is Shiru different from Mintlify?
Both turn MDX into a docs site. Shiru is open source, can be self-hosted, is priced per organization instead of per seat, and treats agents as first-class readers with Markdown at every URL and an llms.txt index.
What exactly do agents get?
The same content your readers see, as Markdown. Add .md to any page URL, or start from /llms.txt, which lists every page.
Do I have to rewrite my docs?
If they’re Markdown, mostly not. MDX is Markdown with optional components. Give each page a title in its frontmatter and you can publish.
Can I self-host?
Yes. The engine moves into the public repository before launch, and you can run it on your own infrastructure.
When does Shiru launch?
We’re building it now. Join the waitlist and we’ll send one email when it ships.
How much will it cost?
Pricing is per organization, not per seat. Plans and prices are published at launch.
Give both of your readers the good version.
Join the waitlist. One email when Shiru ships.