Configuration
Every config key and frontmatter field, all frozen since 0.5.
vellum:install publishes the config to config/vellum.php. The key names have been frozen since 0.5. Later releases can add keys, but none will be renamed before 1.0.
Site and routing
| Key | Default | Purpose |
|---|---|---|
name |
env('APP_NAME', 'Docs') |
Site name, shown in the header and page titles |
path |
env('VELLUM_PATH', resource_path('docs')) |
Root folder of the Markdown files. A relative path is read from the app root |
route.prefix |
docs |
URL prefix |
route.middleware |
['web'] |
Route middleware |
route.domain |
null |
Optional domain for the docs routes. Canonical links and the sitemap use it as their host, with the scheme from app.url |
repo |
null |
Base URL for the "Edit on GitHub" link |
logo |
null |
Path to an SVG file, or a Blade view name, for the site logo |
links |
[] |
Extra links, each with label, href and an optional icon: github. Shown in the sidebar footer, or in the header when layout.search is header |
layout.search |
env('VELLUM_LAYOUT_SEARCH', 'sidebar') |
Where the search field sits: sidebar or header. See Theming |
layout.toc |
env('VELLUM_LAYOUT_TOC', 'window') |
How the table of contents marks what is on screen: window or line. See Theming |
fonts |
null |
HTML added to the layout's head, such as a font stylesheet link |
checks.references |
true |
Warn during vellum:build about links and images that point at nothing |
checks.strict |
false |
Fail the build when there are reference warnings |
checks.search |
true |
Ask the questions in questions.yml, if the docs have one, during vellum:build. See Search |
checks.search_min |
env('VELLUM_SEARCH_MIN', 0.0) |
The share of those questions that must find their answer for the build to pass. 0 reports without failing |
agents.llms_txt |
true |
Serve llms.txt and llms-full.txt under the docs prefix. See Page actions |
agents.llms_txt_root |
true |
Also serve both at /llms.txt and /llms-full.txt, unless the app already routes those paths |
agents.content_negotiation |
true |
Serve a page's raw Markdown when the request's Accept header prefers text/markdown |
agents.search |
true |
Serve {prefix}/_vellum/search?q=, which returns search results as JSON. See Search |
cache.path |
storage_path('framework/vellum') |
Directory for compiled pages |
export.out |
public_path('docs-static') |
Output directory for vellum:export |
export.base_url |
/ |
URL prefix used inside the export |
Theme
See Theming for the presets, the accent colour and the contrast target.
php
'theme' => [
'preset' => 'neutral',
'primary' => null,
'accent' => null,
'radius' => '0.5rem',
'default' => 'system',
],
Versions
See Versions.
php
'versions' => [
'enabled' => false,
'latest' => 'v2',
'list' => ['v2', 'v1'],
'labels' => [],
],
Search
See Search.
php
'search' => [
'enabled' => true,
'hotkey' => 'k',
'driver' => env('VELLUM_SEARCH_DRIVER', 'builtin'),
'scout' => [
'index' => 'vellum',
],
],
Components
See Value tags and Extending.
php
'components' => [
'namespaces' => ['vellum'],
'allowlist' => [
'env' => [],
'config' => [],
'route' => [],
],
],
Changelog
See Release notes.
php
'changelog' => [
'path' => env('VELLUM_CHANGELOG', base_path('CHANGELOG.md')),
'unreleased' => false,
],
Frontmatter
Pages accept these frontmatter keys, which are also frozen:
| Key | Purpose |
|---|---|
title |
Page title. Falls back to the first heading, then the file name |
description |
Meta description, also shown on the next-page card and on cards that ask for it |
slug |
Overrides the URL slug |
order |
Position among sibling pages when meta.json does not list them |
full |
Hides the table of contents column |
access |
guest, auth, or a gate name. See Gating. |
updated |
Last-updated date, 2026-09-17 or ISO 8601 (2026-09-17T10:00:00+02:00), shown under the page title. Without it, the file's last git commit date is used, when the docs are in a full git clone. File modification times are never used |
questions |
Questions the page answers, as a list. Search matches a reader's question against them, alongside the ones Vellum derives from headings, commands and config keys |
aliases |
Other names readers use for the page's subject, as a list. A search containing one also matches the page title and the other aliases |
A folder's meta.json accepts title, defaultOpen, pages and access. A _meta.md file can set the folder's access or title in frontmatter instead. See Navigation.
Unknown keys are stored but ignored. Do not treat that behaviour as an API.