Share a MkDocs Site With Your Team (No GitHub Account Required)
MkDocs builds clean, well-formatted documentation sites from Markdown. The build output — `./site/` — is a static directory that renders correctly in any browser.
The problem
MkDocs builds clean, well-formatted documentation sites from Markdown. The build output — ./site/ — is a static directory that renders correctly in any browser.
Sharing it is the gap. GitHub Pages (private repos) requires Enterprise Cloud and GitHub accounts for every viewer. Confluence requires manually recreating the content. Read the Docs requires Sphinx or their proprietary format. Your PM reads the raw Markdown in the GitHub repo and struggles with unrendered links and broken formatting.
Display publishes the built MkDocs site at a permanent, company-authenticated URL. Non-engineers see rendered documentation. No GitHub account. No Confluence migration.
Setup
pip install mkdocs mkdocs-material
mkdocs build
dsp publish ./site/ --name "engineering-docs"Share the URL in your onboarding docs, company Notion, or Slack. Anyone with a company email clicks it, authenticates once, and reads the full rendered MkDocs site — navigation, search, code highlighting, everything.
Auto-deploy on push to main
name: Deploy Docs
on:
push:
branches: [main]
paths: ['docs/**', 'mkdocs.yml']
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: pip install mkdocs mkdocs-material
- name: Build docs
run: mkdocs build
- name: Publish docs
run: |
npm install -g @display-dev/cli
dsp publish ./site/ --name "engineering-docs"
env:
DISPLAYDEV_API_KEY: ${{ secrets.DISPLAYDEV_API_KEY }}Every push to docs/ or mkdocs.yml triggers a rebuild and republish. The URL stays the same. Bookmarks don't break.
Works with Docusaurus too
npm run build
dsp publish ./build/ --name "product-docs"Same pattern: any static site generator that outputs a ./build/ or ./site/ directory works with dsp publish ./output-dir/.
FAQ
Does MkDocs search work after publishing?
Yes. MkDocs generates a search_index.json file in the build output. Display serves the whole ./site/ directory, including the search index. Client-side search works correctly.
What if we have multiple doc sites (one per project)?
Publish each with a different name: - dsp publish ./api/site/ --name "api-docs" - dsp publish ./platform/site/ --name "platform-docs"
How is this different from just using GitHub Pages?
GitHub Pages (public repos): anyone on the internet can access. For internal documentation, this is inappropriate. GitHub Pages (private repos): Enterprise Cloud required ($21/user/month). Every viewer needs a GitHub account. Display: $49/month flat. Any @yourcompany.com email gets access. No GitHub account needed.
Free tier. No credit card. One-time password auth for viewers on free, Google + Microsoft SSO on Teams ($49/month flat).