Presentation Format

Toboggan serializes talks as TOML using the Talk, Slide, Content, and TerminalConfig types from toboggan-core.

You can also pass a directory of Markdown files directly to toboggan-server — the same parser from toboggan-cli converts them on startup. See Creating Presentations.

Canonical shape

title = "My Talk"
date = "2026-05-30"
footer = "Optional footer"
head = "Optional HTML head fragment"

[[slides]]
kind = "Part"

[slides.title]
type = "Text"
text = "Part 1: Introduction"

[[slides]]
kind = "Standard"

[slides.title]
type = "Text"
text = "Welcome"

[slides.body]
type = "Text"
text = "Welcome to this presentation!"

Talk fields

FieldTypeRequiredDescription
titleStringYesPresentation title
dateDateYesPresentation date (YYYY-MM-DD)
footerStringNoOptional global footer
headStringNoOptional HTML inserted into the page head
slidesArrayYesOrdered slide list

Slide fields

FieldTypeRequiredDescription
kindStringNoCover, Part, or Standard
titleContentNoSlide title content
bodyContentNoSlide body content
notesContentNoSpeaker notes
styleStyleNoCSS classes or inline style
terminalsArrayNoEmbedded terminal configurations

Content variants

Content is serialized as a tagged enum:

VariantShapeUse
Emptyomitted/defaultNo content
Text{ "type": "Text", "text": "..." }Plain text or Markdown text
Html{ "type": "Html", "raw": "...", "alt": "..." }Rich HTML with optional accessibility fallback

Style fields

FieldTypeDescription
classesArrayCSS classes
styleStringInline CSS

Embedded terminals

Slides can embed one or more terminal panes via TerminalConfig.

FieldTypeDescription
cwdStringWorking directory
themedark / lightTerminal theme
cmdStringOptional command to run

The markdown parser recognizes terminal blocks like <!-- term: path/to/cwd --> and variants with :light or | command.

Time values

  • Presentation dates use YYYY-MM-DD.
  • Durations in other config structures serialize as human-readable strings such as 30s, 2m, or 1m 30s.