Configuration

Complete reference for all options available in tulip.toml.

[site]

Required. Site metadata available in templates via {{ site.* }}. Any field you add becomes a template variable.

OptionRequiredDescription
nameYesSite name, used in templates and plugin context
base_urlYesCanonical base URL (no trailing slash)
descriptionNoSite description for meta tags
*NoAny custom field — available as {{ site.field }}
[site]
name = "My Site"
base_url = "https://example.com"
description = "A site built with tulip"
author = "Jane Doe"
github = "https://github.com/janedoe"

[build]

Controls the build output.

OptionDefaultDescription
target"dist"Output directory for the built site
auto_cleantrueRemove the output directory before each build
[build]
target = "dist"
auto_clean = true

[build.clean_urls]

Controls clean URL generation. When enabled, about.tulip generates about/index.html instead of about.html, so URLs look like /about/ instead of /about.html.

OptionDefaultDescription
enabledtrueGenerate clean URLs
exclude[]File stems to exclude (generate .html directly)

Files named index.tulip always generate index.html regardless of this setting.

[build.clean_urls]
enabled = true
exclude = ["404"]

With this config, 404.tulip generates 404.html (required by GitHub Pages), while all other pages use clean URLs.

[dev]

Settings for the development server started by tulip serve.

OptionDefaultDescription
port3000Port for the dev server
watchtrueWatch files and trigger live reload on changes
[dev]
port = 3000
watch = true

[minify]

Enables HTML minification via minify-html. Applied as the final step after all plugins.

OptionDefaultDescription
enabledtrueEnable HTML minification
[minify]
enabled = true

[[plugins]]

Declare plugins installed in the plugins/ directory. Plugins execute in the order they appear.

OptionRequiredDescription
nameYesPlugin directory name under plugins/
sourceNoGitHub URL for tulip install. Append @tag to pin a version.
configNoKey-value pairs to override plugin defaults
[[plugins]]
name = "seo"
source = "https://github.com/user/tulip-plugin-seo@v0.1.0"
config = { site_name = "My Site" }

[[plugins]]
name = "analytics"
source = "https://github.com/user/tulip-plugin-analytics@v0.2.0"
config = { id = "G-XXXXX" }

Full example

[site]
name = "My Blog"
base_url = "https://blog.example.com"
description = "Personal blog about Rust and web dev"

[build]
target = "dist"
auto_clean = true

[build.clean_urls]
exclude = ["404"]

[dev]
port = 8080
watch = true

[minify]
enabled = true

[[plugins]]
name = "tailwind"
source = "https://github.com/eduardostuart/tulip-tailwind@v0.1.0"

[[plugins]]
name = "seo"
source = "https://github.com/user/tulip-plugin-seo@v0.1.0"
config = { site_name = "My Blog", og_image = "/images/og.png" }