Configuration

Everything Civet needs to know about your site lives in one file: civet.toml.

Civet is configured with a single TOML file at the root of your project. Sensible defaults mean you can publish with an empty config, then add settings as your site grows.

A complete example

# civet.toml title = "My Site" base_url = "https://example.com" description = "Notes on systems and software." language = "en" theme = "paperleaf" [author] name = "Jane Doe" email = "jane@example.com" [build] drafts = false minify = true output_dir = "public" incremental = true [taxonomies] tag = "tags" series = "series" [permalinks] posts = "/:year/:month/:slug/" [[menu.main]] name = "Home" url = "/" [[menu.main]] name = "Posts" url = "/posts/" [[menu.main]] name = "About" url = "/about/" [markup.highlight] theme = "github-dark" lineNos = true

Site metadata

KeyDefaultDescription
titleSite title, used in <title> and feeds.
base_urlCanonical origin, used for absolute URLs and sitemap.
description""Short site description for SEO and OG tags.
language"en"Default language code; enables i18n when set.
themebuilt-inName of a theme directory under themes/.

Build options

The [build] table controls how your site is rendered.

  • drafts — include draft posts (defaults to false; the dev server always shows drafts).
  • minify — minify HTML, CSS, and JS output.
  • incremental — only rebuild changed pages. Keep this on.
  • output_dir — where the built site is written.

Permalinks

Control URL structure per section with placeholders:

[permalinks] posts = "/:year/:month/:slug/" notes = "/notes/:slug/"

Available tokens: :year, :month, :day, :slug, :section, :filename.

Taxonomies

Define how content is grouped. Each entry maps a front-matter field to a URL prefix:

[taxonomies] tag = "tags" series = "series" author = "authors"

Environment variables

A few settings can be overridden at build time, handy for CI:

$ CIVET_BASE_URL=https://staging.example.com civet build

Edit this page on GitHub · Last updated July 8, 2026