Open-source
documentation, self-hosted.
Tangly turns a folder of Markdown into a fast, themed, deployable docs site. No proprietary backend, no monthly bill — just a static binary and your repo.
tangly dev What Tangly is
Tangly turns Markdown into a fast, themed, deployable docs site.
Already have Mintlify? tangly dev renders your project as-is.
One-line install via curl.
npm i -g tangly tangly init tangly build 38 components, no imports.
Drop a tag in MDX. Every theme ships every component. Render here uses
the real @tanglydocs/theme-ui package, not screenshots.
v0.1.0
May 2026npm i -g tangly
bun add -g tangly
curl tangly.dev/install.sh | sh
Child of <Tabs>. One panel.
-
Install
npm i -g tangly -
Init
tangly init -
Build
tangly build
Child of <Steps>. One step.
Why Tangly?
Free?
Mintlify compat?
bun add tangly npm i tangly pnpm add tangly my-docs
- docs.json
- intro.mdx
api/
- openapi.yaml
$ tangly init my-docs
q string path required id uuid curl api.tangly.dev/v1
-H "Auth: $TOKEN" { "id": "d_47" } v0.1 new beta
Press Cmd+K
SSE stream Server-sent events
An MDX file is markdown plus JSX.
npm install tanglyyarn add tanglypnpm add tanglybun add tanglyNot components. Markdown syntax, wired by default. Shiki highlighting with line highlights, diffs, and titles. KaTeX math. Mermaid diagrams. Every page, every theme.
export async function search(q: string) {
const index = await load("/pagefind");
return index.search(q);
} The rest is here.
Every feature you'd reach for. Each does what it says.
Append .md to any URL or send Accept: text/markdown. About 10× fewer tokens. /llms.txt and /llms-full.txt ship by default.
Static index built at tangly build. No Algolia key, no third-party request, no per-month cost.
A branded 1200×630 Open Graph image per page, generated from its title, theme, and your colors. Links unfurl in Slack, iMessage, and X instead of rendering blank. Previews self-reference and stay out of search.
Put a component into components/. Use it from MDX. Hot reloads. No registration.
// components/Pricing.astro --- const { tiers } = Astro.props; --- <ul>{tiers.map((t) => <li>{t.name}</li>)}</ul> // pricing.mdx <Pricing tiers={tiers} />
Mark a page draft: true. Hidden in production, visible in tangly dev. Ship preview builds with --include-drafts.
When docs.json is wrong, tangly check names the key, the line, the reason, and the fix. Did-you-mean for typos, rename hints for Mintlify fields.
tangly migrate reads mint.json and emits a Tangly-shaped docs.json. MDX stays untouched.
Build with --base /docs/. All asset paths rewrite. Works behind Caddy, nginx, or a Cloudflare Worker.
Outgrown the magic? tangly eject materializes the synthesized Astro project into your repo. astro.config.mjs is yours to edit. One-way, no Tangly required after.
A 14-line GitHub Actions workflow ships your docs to GitHub Pages on every push. Bun caches resolve in seconds. The Tangly monorepo deploys itself this way.
Cold start under 2s on a hundred pages. tangly dev boots fast and stays out of the way.
Five themes. Same Markdown.
Swap a one-line value in docs.json. Same content, new register. Each tile is a real Tangly site.
Click through to examples.tangly.dev.
Mintlify-Mint inspired. Sidebar nav, on-page TOC, monospace headings.
Serif headings, cream surface, generous measure. For long-form writing.
No sidebar. Single-column reading mode. Headings as the only navigation.
Narrow column, large body type, drop caps. Reads like a manual.
Vercel/Linear register. Ink ground, thin rules, dense type scale.
The default `tangly init` scaffold. Three sections, three pages, on the tang theme. The fastest way to start typing.
Point at an OpenAPI spec. Get a real API reference.
Drop a 3.0 or 3.1 spec into docs.json. Tangly generates browseable endpoint pages with schemas, examples,
and a try-it panel — no third-party explorer required.
openapi: 3.1.0 info: title: Search Stream version: 2026.05.01 paths: /v1/search-stream: get: summary: Stream search results parameters: - in: query name: q required: true schema: type: string responses: '200': content: text/event-stream: ...
Stream search results
Returns a server-sent event stream of search results as they're resolved.
Search query. May include wildcards.
Maximum results. Capped at 250.
Static output. Ship anywhere.
tangly build emits a
folder. Drop it on any host that serves files. No runtime, no Node
process.