Deployment
Folio builds a static site into _site/. Deploy that folder to any static host.
The internal build workspace is only a cache and should not be committed or used
as the public artifact.
Build Once
Run the build from your project root:
uv add folio-docs
uv run folio build --cleanThe _site/ directory contains HTML, assets, Pagefind search data, llms.txt,
and llms-full.txt.
Vercel
Use Vercel as a static-site host:
Install Folio
Add Folio to your project so Vercel can run the same build command as your local machine:
uv add folio-docsConfigure the project
In Vercel project settings, use:
- Framework Preset: Other
- Install Command:
corepack prepare pnpm@10 --activate && uv sync --locked - Build Command:
uv run folio build --clean - Output Directory:
_site
Deploy
Push to your production branch. Vercel runs the build command and publishes
_site/.
Netlify
Create a netlify.toml that publishes the static artifact:
[build]
command = "corepack prepare pnpm@10 --activate && uv sync --locked && uv run folio build --clean"
publish = "_site"
[build.environment]
NODE_VERSION = "20"Netlify will rebuild the docs on each deploy and serve _site/ directly.
GitHub Pages
GitHub Pages serves static files. Set project.url in docs.yaml to the final
Pages URL before deploying so sitemap and metadata use the public URL.
For GitHub Pages builds, set FOLIO_DEPLOY_PROVIDER=github-pages in the build
step or add deploy.provider: "github-pages" to docs.yaml. Folio then infers
/repo-name for project pages from GITHUB_REPOSITORY, while user and
organization pages such as owner.github.io stay at /. Use FOLIO_BASE_PATH
or deploy.base_path only when you need an explicit override.
Build your docs
uv run folio build --cleanPublish the static site
Upload _site/ as the GitHub Pages artifact.
Configure GitHub Actions
See the CI/CD guide for a complete GitHub Actions workflow.
Self-hosted
Any static file server can host the generated site:
uv run folio build --clean
python3 -m http.server 8080 --directory _siteFor containerized deployments, copy _site/ into a small static web server
image such as Nginx, Caddy, or any equivalent platform image.