Site settings
Configure title, theme, sections, and navbar links with site.yaml.
The site.yaml (or site.yml) file at your docs sync root is the primary way to configure a git-backed site. Console settings still work for sites that are not git-synced; when sections: is present on sync, YAML rebuilds the section tree.
Complete starter
title: Acme Docs
visibility: public
theme:
accent_color: '#0F766E'
logo_url: https://cdn.example.com/logo.svg
layout: centered
exclude:
- README.md
- '**/drafts/**'
navbar_links:
- text: GitHub
url: https://github.com/acme/docs
type: minimal
- text: Dashboard
url: https://app.example.com
type: filled
sections:
- name: Guide
slug: guide
path: .
exclude:
- README.md
- name: API
slug: api
api: payments
- name: More
children:
- name: SDKs
slug: sdks
sdk: payments-sdk
Core fields
Field | Required | Description |
|---|---|---|
| No | Site title in the header |
| No |
|
| No | Branding and layout (see below) |
| No | Globs skipped during Markdown discovery |
| No | Right-aligned header actions |
| Recommended | Top-nav definition; when set, full section rebuild on sync |
| No | Advanced nav bag; prefer |
Top-level accent_color and logo_url are still accepted for older configs. Prefer nesting them under theme.
Theme
theme:
accent_color: '#0F766E'
logo_url: https://cdn.example.com/logo-light.svg
logo_dark_url: https://cdn.example.com/logo-dark.svg
favicon_url: https://cdn.example.com/favicon.ico
layout: centered # full (default) | centered
Key | Aliases | Notes |
|---|---|---|
|
| Brand accent in the docs shell |
|
| Absolute URL; light or single logo |
|
| Absolute URL used in dark mode when set |
|
| Absolute URL for the browser tab icon |
| — | See layout semantics below |
Layout semantics
Value | Behavior |
|---|---|
| Sidebars sit at the viewport edges; guide articles keep a readable centered column |
| Nav + main + TOC share a centered max-width column (~ |
More theme options (fonts, background, custom CSS) are tracked under Customization.
Navbar links
navbar_links:
- text: GitHub
url: https://github.com/acme/docs
type: minimal
- text: App
url: https://app.pinnate.dev
type: filled
Key | Aliases | Values |
|---|---|---|
|
| Button label |
|
| Absolute or site-relative URL |
|
|
|
Sections
Each sections: item is one of:
Guide
Discovers Markdown under path (relative to the sync root).
- name: Guide
slug: guide
path: .
exclude:
- README.md
Key | Notes |
|---|---|
| Top-nav label |
| URL segment; derived from |
| Directory of Markdown; |
| Merged with site-level |
| Optional explicit file list (order preserved); otherwise discover all |
API embed
- name: API
slug: api
api: payments # slug, id, or (for some resources) name
Resolves an API in the same organization. The section renders the interactive OpenAPI reference for the latest published document.
SDK embed
- name: SDKs
slug: sdks
sdk: payments-sdk # prefer slug
CLI embed
- name: CLI
slug: cli
cli: payments-cli
Group (dropdown)
Label-only parent — no URL of its own:
- name: More
children:
- name: SDKs
slug: sdks
sdk: payments-sdk
Children can be guides or embeds. See Navigation.
Discovery and excludes
With discovery (no pages: list):
Collect
.md/.mdxunder the sectionpathDrop paths matching site or section
excludeglobsSort by frontmatter
position, then shallower paths, then path nameBuild sidebar folders from directories
Rewrite relative Markdown links to public
/{section}/{pageSlug}URLs
If any guide section yields zero pages after excludes, sync fails with a validation error.
Visibility
visibility: public # or private
Private sites require organization membership to read. See Visibility and Authentication.
Without sections:
If site.yaml omits sections:, sync fills the existing guide section from Markdown under the root and preserves embed sections already attached in the console. Prefer declaring sections: for reproducible docs-as-code.
Related
site.yaml reference — field-by-field matrix