Skip to content
Vellum

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' => [],
],

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.