Reference

Every command, setting and front matter key, in one place. The full details are inside siv: siv help TOPIC.

Commands # ↑

siv                         What to do next
siv init NAME               Create a project from a starter
    --starter minimal       Which starter: minimal or kitchen-sink
siv new "Title"             Create a page: content/title/index.md
siv new boats/tugboat       Create a page in a folder
siv preview                 Show the site on localhost while you write
    --port 8888             First port to try
    --bind 0.0.0.0          Listen on all interfaces (default localhost)
siv build                   Build the website into public/
    --strict                Exit with code 2 if there are warnings
    --drafts                Include pages marked draft = true
siv check [FILE]            Run the checks, write nothing
siv explain [-r] [PATH]     Explain files, folders and addresses
siv explain --vars PATH     Values a template sees
siv clean                   Delete the cache, .siv/cache/
siv config                  List every setting and where it comes from
siv config KEY VALUE        Change a setting in siv.toml
siv fmt [--check]           Tidy front matter
siv stats                   A report about the site
siv import hugo DIR [NAME]  Create a project from a Hugo site
siv help [TOPIC|CODE]       Documentation
siv help --dump-all         Every help page as one text, for grep

Tools:

siv util archive PAGE [YEAR] [LABEL]   a dated edition of a page
siv util insert NAME [PAGE]            insert a snippet from skel/snippets/
siv util imgtest FILE                  compare image qualities by eye
siv util vitag                         edit the tags of all pages at once
siv util lang [PAGE...]                write detected languages into pages
siv util chooseimg [DIR]               print Markdown for an image
siv util completion bash|zsh           Tab completion for the shell
siv util micro                         settings for the micro editor

Every command works anywhere inside the project: siv finds siv.toml in the folder or the folders above it. Exit codes: 0 success, 1 errors, 2 warnings with --strict.

Settings # ↑

Settings are in siv.toml. siv config lists every one, with its value and where the value comes from. Change one with siv config KEY VALUE, or edit the file.

title                  the site's title
base-url               the site's address: needed for the feed and sitemap
lang                   the default language of pages, like "en"
autodetect-lang        languages siv may detect, like ["en", "fi"]
links                  how links are written: relative, root, absolute or file
hints                  next-step hints: all, pro or off
timezone               for the feed, like "Europe/Helsinki"
text-width             width of the text column, in em
wide-width             width of {.wide} images, in em
image-widths           sizes of AVIF images, in pixels
fallback-widths        sizes of JPEG and PNG images
avif-quality           1-100
jpeg-quality           1-100
autodetect-code-lang   guess the language of code blocks
verbatim               files copied byte for byte
dotfiles               dotfiles that are published, like [".well-known"]
[keys]                 your own front matter keys and their defaults
[checks]               turn checks off, or make them errors

Front matter # ↑

title               the page title
published           the date, optionally with a time
updated             the date of the last real update
tags                a list of tags
lang                the page's language, like "fi"
summary-lang        the language of the summary, if different
cover               an image for lists of pages
template            the template, like "list.html"
allow-templating    true lets the text use template code
skel                the skeleton for new pages below (in [recursive])
aliases             old addresses that lead here
draft               true: shown in preview only
listed              false: left out of lists
in-feed             false: left out of the feed
archived, edition   set on dated copies by siv util archive
for-each            make a page for each value, like each tag
verbatim            files copied byte for byte
[recursive]         settings for this folder and everything below
[checks]            turn checks off for this page

[recursive] settings apply to the folder's page and everything below it. What is written closer to the page wins: the command line, then the page, then the nearest folder, then folders further up, then siv.toml.

Safety # ↑

siv never runs as root. While it runs, it limits itself with Linux's Landlock: each command can only touch the files it needs, and only the preview may use the network, for its own port. Even a bug, or a malicious template, can't read your other files or send them anywhere.

  Sandbox     landlock (files and network)

For a second sandbox, any command runs inside bubblewrap with --bwrap. Details: siv help security.

Your website is yours # ↑

siv is free software, licensed GPL-3.0-or-later. That license does not extend to your website. The files siv init makes, the pages you write and everything siv build writes are yours to use, change, publish and license however you like. Details: siv help license.

All help topics # ↑

$ siv help topics

lists every topic. To read or search all of it at once:

$ siv help --dump-all > siv-help.txt