Config

thermite.toml

title = "My Site"           # default: "Thermite Site"
base_url = "https://..."    # default: "" — used for canonical/OG URLs
description = "..."         # default: ""

[extra]
# Arbitrary key-value pairs, injected into every template by key name.
og_image = "https://..."    # special: fallback OG image if page doesn't set one
author = "Your Name"        # → {{ author }} in templates
anything = "you want"       # → {{ anything }}

[extra] values are plain TOML types — strings, ints, bools. They appear in templates by their key name directly, no prefix.


Frontmatter

YAML between --- fences at the top of any .md file. All fields optional.

title: "Page Title"         # falls back to "Untitled"
date: "2026-03-02"          # ISO 8601, with or without time
template: "custom.html"     # default: "index.html" for index.md,
                            #          "page.html" for others
draft: true                 # skips page entirely when true
tags: [rust, ssg]           # string array
description: "..."          # used in OG meta tags
slug: "custom-slug"         # overrides filename for URL path
og_image: "https://..."     # per-page OG image, overrides site-level

extra:                      # arbitrary per-page values
  foo: bar                  # → {{ fm_foo }} in templates
  version: "1.0"            # → {{ fm_version }}

Config vs frontmatter extras

SourceTemplate accessExample
[extra] in thermite.toml{{ key }}{{ author }}
extra: in frontmatter{{ fm_key }}{{ fm_foo }}

Config extras are global (every page). Frontmatter extras are per-page.


Gotchas