Skip to main content
Tuireel uses JSONC (JSON with Comments) configuration files, typically named .tuireel.jsonc. Run tuireel init to scaffold a starter config with JSON Schema support.

General

$schema
string
Path or URL to the JSON Schema file for editor autocompletion. Generated automatically by tuireel init.
format
"mp4" | "webm" | "gif"
default:"mp4"
Output video format.
output
string
default:"output.mp4"
Output file path for the recording.
fps
integer
default:30
Frames per second for the recording. Must be a positive integer.
cols
integer
default:80
Number of terminal columns. Must be a positive integer.
rows
integer
default:24
Number of terminal rows. Must be a positive integer.

Presentation

preset
"polished" | "minimal" | "demo" | "silent"
Apply a built-in presentation preset. Presets configure theme, sound, cursor, and HUD defaults in one line. See Presets for details.
PresetThemeSoundCursorHUD
polishedCatppuccinClick + KeyVisibleVisible
minimalTokyo NightNoneVisibleHidden
demoDraculaClick + KeyVisibleVisible
silentDefaultNoneHiddenHidden
theme
string | ThemeConfig
Terminal color theme. Pass a built-in theme name as a string, or an inline theme object.
// Built-in theme by name
"theme": "catppuccin"

// Inline theme object
"theme": {
  "background": "#1E1E2E",
  "foreground": "#CDD6F4",
  "colors": {
    "black": "#45475A",
    "red": "#F38BA8",
    "green": "#A6E3A1",
    "yellow": "#F9E2AF",
    "blue": "#89B4FA",
    "magenta": "#F5C2E7",
    "cyan": "#94E2D5",
    "white": "#BAC2DE",
    "brightBlack": "#585B70",
    "brightRed": "#F38BA8",
    "brightGreen": "#A6E3A1",
    "brightYellow": "#F9E2AF",
    "brightBlue": "#89B4FA",
    "brightMagenta": "#F5C2E7",
    "brightCyan": "#94E2D5",
    "brightWhite": "#A6ADC8"
  }
}
See Themes for the full ThemeConfig schema and available built-in themes.
cursor
object
Cursor overlay settings.
hud
object
Heads-up display (keystroke overlay) settings.

Sound

sound
object
Sound configuration for the recording.

Behavior

defaultWaitTimeout
number
Default timeout in milliseconds for wait steps that don’t specify their own timeout. Must be a positive number.
steps
Step[]
required
Array of step objects defining the recording script. Must contain at least one step. See Steps Reference for all step types.

Multi-Video Configuration

Tuireel also supports a multi-video config format for recording multiple videos from a single config file:
{
  "defaults": {
    "fps": 30,
    "cols": 80,
    "rows": 24,
    "preset": "polished"
  },
  "videos": [
    {
      "name": "install",
      "output": "install.mp4",
      "steps": [
        { "type": "launch", "command": "bash" },
        { "type": "type", "text": "npm install mypackage" },
        { "type": "press", "key": "Enter" },
        { "type": "pause", "duration": 3 }
      ]
    },
    {
      "name": "usage",
      "output": "usage.mp4",
      "steps": [
        { "type": "launch", "command": "bash" },
        { "type": "type", "text": "mypackage --help" },
        { "type": "press", "key": "Enter" },
        { "type": "pause", "duration": 2 }
      ]
    }
  ]
}
The defaults object accepts all config fields (except steps and output) and is merged with each video definition. Each video in the videos array requires name, output, and steps.

Complete Example

A full single-video config using all available options:
{
  "$schema": "file:///home/user/.tuireel/schema.json",
  "preset": "polished",
  "format": "mp4",
  "output": "demo.mp4",
  "fps": 30,
  "cols": 100,
  "rows": 30,
  "theme": "catppuccin",
  "cursor": { "visible": true },
  "hud": { "visible": true },
  "sound": {
    "effects": { "click": 1, "key": 2 },
    "track": "./background.mp3",
    "trackVolume": 0.2,
    "effectsVolume": 0.6
  },
  "defaultWaitTimeout": 10000,
  "steps": [
    { "type": "launch", "command": "bash" },
    { "type": "type", "text": "echo 'Hello, world!'" },
    { "type": "press", "key": "Enter" },
    { "type": "wait", "pattern": "Hello, world!" },
    { "type": "pause", "duration": 2000 }
  ]
}