Page
What is Inkan
A docs site for Architecture Decision Records and RFCs, built from the Markdown in your repository.
Inkan turns a folder of Markdown files into a searchable website for Architecture Decision Records (ADR) and RFCs. You keep writing records in your repository, next to the code and under the same review process. Inkan adds the site: one folder per team, record numbers, statuses, a timeline, a backlog, a decision graph, full-text search, a print export and machine-readable exports for AI tools. It also adds the tooling around the records: a check for CI, commands that change statuses and supersede records, an importer for existing ADR folders, records pulled from other repositories and an MCP server for agents.
It is a CLI with a complete site inside the npm package. Your repository holds only content and one config file.
Who it is for#
- Engineering organisations that want one place for the decisions of every team (SRE, Payments, Platform, DBRE and so on), without one wiki page per team drifting apart.
- Teams that already write ADRs as Markdown and want them published without building a site themselves.
- People who use coding agents and want the decisions available as
llms.txt,decisions.json,graph.jsonandAGENTS.md.
You need Node.js 22.22 or newer, a Git repository and a few minutes. See the quick start.
How it works#
your repository inkan (npm package)inkan.config.ts ─┐ bin/cli.mjs dev | build | preview | initdecisions/ ├──────────► lib/commands/ new | status | supersede | import | check | sync | export | mcp │ app/ the Astro site, config injected as a virtual module sre/_project.yml │ templates/ adr.md, rfc.md for `inkan new` sre/adr/0001-….md │ starter/ files that `init` copies sre/rfc/0001-….md ─┘ dist/ static HTML, CSS, search indexinkan build reads your config, validates every record’s front matter and writes plain HTML to dist/. There is no server and no database: host the output on GitHub Pages, GitLab Pages, S3 or nginx.
Features#
Every feature of Inkan is documented as a record on this site. The record explains why the feature exists, what was decided and how to use it.
CLI#
- Ship as an npm package with a CLI:
dev,build,preview,--root,--port,--host. - Scaffold with init and npm create: a working repository in one command, including CI files.
- Number records with inkan new: the next
NNNN-slug.mdfrom a template. - Validate config and content at build time: typos in the config and bad front matter fail fast.
- Change status and supersede from the CLI:
statusandsupersedeedit front matter in place and link both records. - Import from log4brains, MADR and adr-tools: bring an existing ADR folder in with one command.
- Check records in CI:
checkfinds broken references, duplicate numbers, one-sided supersede links and overdue reviews in seconds, with pull request annotations. - Mark records reviewed from the CLI:
reviewedcloses a periodic review in front matter andreviewslists what is due.
Writing records#
- One folder per project and record type comes from the folder:
decisions/<project>/<type>/NNNN-slug.md, nothing to register. - Metadata in front matter, a configurable status lifecycle and an optional author directory.
- Link records by path:
supersedes,supersededBy,related, or plain relative Markdown links. - GitHub-flavoured Markdown with diagrams and math and issue keys turned into links.
- Fill date and authors from git: a record without
dateorauthorstakes them from its first commit. - Reference records from code: a
// @adr sre/adr/0001comment lists that file on the record. - Review decisions on a schedule:
reviewEvery: 1 yearon a record, a project or the site brings decided records back for review, on/reviews/, incheckand for agents.
Site#
- Landing page from config, a filterable record index, timeline and backlog, authors and tags pages, a decision graph of supersedes and related links.
- Full-text search with Pagefind, header, banner, footer and redirects, RSS feed and sitemap.
- Print and export:
/export/is one print-ready document of every current decision, andinkan exportwrites it as HTML or PDF. - README badges:
/badges/records.svg,/badges/accepted.svgand one badge per project, plus shields.io endpoints. - Open Graph cards: every record, team and the site get a generated 1200×630 PNG, so shared links unfurl with a picture.
Theming#
- OVERPRINT design with Day and Stage themes.
- Theme with —inkan-* CSS tokens, brand with logo and favicon, generated record covers.
Extending#
- Plugins with definePlugin, override components and fill slots.
- Custom pages, MDX components without imports, data API and layouts.
AI and data#
- llms.txt and llms-full.txt, decisions.json, a Markdown copy of every page and AGENTS.md for coding agents.
- MCP server for agents:
inkan mcplets agents search and read records with filters, from the local folder or a published site.
Deploying#
- Static HTML output, GitHub and GitLab Pages, Docker and nginx, serve from a sub-path.
- Records from other repositories:
sourcesandinkan syncshow the decisions of other repositories as projects of one site.
Ideas that are not built yet are RFCs with status: proposed. They show up on the Open decisions page of this site.
Compared with similar tools#
Zudoku is a docs framework for API references: a CLI, a site inside the package, one config file, and your repository holds only content. Inkan follows the same model, but the content model is decisions instead of OpenAPI, so it knows about projects, record types, numbers, statuses and the links between records.
log4brains is the closest tool in purpose. It also publishes ADRs from Markdown and gave Inkan many of its ideas: numbered files, a timeline, superseding. Inkan differs in a few places: metadata lives in front matter instead of Markdown headings, many projects share one site through folders, and the output includes files made for AI agents. Ideas that are not built yet are written up as RFCs next to the decisions.
About this site#
This site is built with Inkan from the docs/ folder of the Inkan repository. The config is docs/inkan.config.ts, the records are in docs/decisions/, and every page you read here renders the way your own records will.
Next: the quick start, then the repository layout, the configuration reference and the front matter reference.