Distributed documentation tooling for a distributed company.
docs-builder command line tool to generate single doc-setsDistributed as native macOS, Linux, and Windows binaries for several CPU architectures.
The documentation files:
docs folder but the tooling will look for any folder holding the docset.yml configuration file given the current working directory.[!TIP] To learn how to use docs-builder to contribute docs to Elastic, refer to Contribute to the docs locally.
The main driver for folks writing documentation is docs-builder.
This tool builds each repository in isolation and in addition produces a full mapping of all the linkable resources it contains in a links.json file.
Each time a repository successfully builds on its respective main integration branch, our automation will publish its links.json file. For example, Elasticsearch's links.json representing all linkable resources in the Elasticsearch repository.
The docs-builder assemble command then assembles all the repositories in the link-registry using their last known good commit.
This allows us to:
docs-builder builds.links.json
curl -sL https://ela.st/docs-builder-install | sh
iex (New-Object System.Net.WebClient).DownloadString('https://ela.st/docs-builder-install-win')
Installing through the script will download the latest version of the tool and make it available in your PATH.
If you want to manually install the tool you can download the latest release from the Releases Page
Install .NET 10.0, then run:
./build.sh publishbinaries
After which the locally built binaries will be available at:
./.artifacts/publish/docs-builder/release/docs-builderOur Documentation is the best place to learn how to start using the tool locally.
The essential commands are:
docs-builder from the root of any checkout with a docs folder will build the documentation.
docs-builder consecutively will only rebuild the documentation that has changed.docs-builder with the --force flag will force a full rebuild of the documentation.docs-builder --path <path>docs-builder serve will provide a local server with live reloading.
docs folder.docs-builder mv Move files and foldersdocs-builder diff validate Manage redirects across doc setsdocs-builder inbound-links validate-link-reference can be used after a build to validate the local links.json against all published documentation.For a complete reference of all available commands, refer to the CLI documentation.
The docs-builder tool is available as a GitHub action.
It runs as native code on a distroless image ~25mb so there is little overhead invoking the tooling.
jobs:
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build documentation
uses: elastic/docs-builder@main
To set up the tool to publish to GitHub Pages, use the following configuration.
name: Build the docs
on:
push:
branches:
- main
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
jobs:
docs:
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Publish Github
uses: elastic/docs-builder/actions/publish@main
id: deployment
with:
continue-on-error: "true"
private: true
This single action will build and validate the documentation before publishing.
Make sure your repository settings are set up to deploy from GitHub actions see:
https://github.com/elastic/{your-repository}/settings/pages

Refer to CONTRIBUTING.md for more information on how to develop locally and contribute to the project.
1,452 followers · starred Apr 2026
C#
84.1%
TypeScript
10.6%
HTML
2.4%
CSS
2.4%
Distributed documentation tooling for a distributed company.
docs-builder command line tool to generate single doc-setsDistributed as native macOS, Linux, and Windows binaries for several CPU architectures.
The documentation files:
docs folder but the tooling will look for any folder holding the docset.yml configuration file given the current working directory.[!TIP] To learn how to use docs-builder to contribute docs to Elastic, refer to Contribute to the docs locally.
The main driver for folks writing documentation is docs-builder.
This tool builds each repository in isolation and in addition produces a full mapping of all the linkable resources it contains in a links.json file.
Each time a repository successfully builds on its respective main integration branch, our automation will publish its links.json file. For example, Elasticsearch's links.json representing all linkable resources in the Elasticsearch repository.
The docs-builder assemble command then assembles all the repositories in the link-registry using their last known good commit.
This allows us to:
docs-builder builds.links.json
curl -sL https://ela.st/docs-builder-install | sh
iex (New-Object System.Net.WebClient).DownloadString('https://ela.st/docs-builder-install-win')
Installing through the script will download the latest version of the tool and make it available in your PATH.
If you want to manually install the tool you can download the latest release from the Releases Page
Install .NET 10.0, then run:
./build.sh publishbinaries
After which the locally built binaries will be available at:
./.artifacts/publish/docs-builder/release/docs-builderOur Documentation is the best place to learn how to start using the tool locally.
The essential commands are:
docs-builder from the root of any checkout with a docs folder will build the documentation.
docs-builder consecutively will only rebuild the documentation that has changed.docs-builder with the --force flag will force a full rebuild of the documentation.docs-builder --path <path>docs-builder serve will provide a local server with live reloading.
docs folder.docs-builder mv Move files and foldersdocs-builder diff validate Manage redirects across doc setsdocs-builder inbound-links validate-link-reference can be used after a build to validate the local links.json against all published documentation.For a complete reference of all available commands, refer to the CLI documentation.
The docs-builder tool is available as a GitHub action.
It runs as native code on a distroless image ~25mb so there is little overhead invoking the tooling.
jobs:
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build documentation
uses: elastic/docs-builder@main
To set up the tool to publish to GitHub Pages, use the following configuration.
name: Build the docs
on:
push:
branches:
- main
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
jobs:
docs:
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Publish Github
uses: elastic/docs-builder/actions/publish@main
id: deployment
with:
continue-on-error: "true"
private: true
This single action will build and validate the documentation before publishing.
Make sure your repository settings are set up to deploy from GitHub actions see:
https://github.com/elastic/{your-repository}/settings/pages

Refer to CONTRIBUTING.md for more information on how to develop locally and contribute to the project.
1,452 followers · starred Apr 2026
C#
84.1%
TypeScript
10.6%
HTML
2.4%
CSS
2.4%