From one command to an image that explains itself.
The CLI uses the same visual engine as the app. Render files, pipes, Git diffs, terminal output, and local images; then copy, save, open the editor, or produce complete asset sets for documentation and CI.
⌘K
visible results · Press ⌘K to search
01 · Start here
Install and verify
Homebrew installs the app and puts vitrine on your PATH. With the DMG, enable it from Settings ▸ General ▸ Command-line tool.
Availability. The App Store build does not include the CLI. Basic vgrab capture is free; render, multi-size, batch, and vpane require an active PRO license in the direct-download build. version, list, and recipe also work without PRO.
Your first image
Start without configuring anything. Vitrine infers Swift from the extension, uses One Dark and the aurora background, and writes a retina PNG.
Choose the verb by the result you need; you do not have to memorize flags to get started.
terminal-captureFree path behind vgrab
The constrained local command emitted by vgrab. It accepts terminal width and context, but no general styling, file output, sidecars, or batch automation.
Visually blur a region; this does not sanitize sidecars.
--highlight-lines<spec>
Highlight 1-based rows such as 3,7-9,12.
--redact-lines<spec>
Redact rows in the image and replace them in sidecars.
--redact-secrets
Scan for likely secrets and redact matching rows.
--focus-lines, --no-focus-lines
Dim or restore rows outside the highlight.
--diff-bands, --no-diff-bands
Show or hide GitHub-style added and removed bands.
Brand watermark
Add text, a local logo, or both through the same render-core overlay as Brand Kit.
--watermark<text>
Watermark text.
--watermark-logo<path>
Local logo image.
--watermark-color<hex>
Text tint; requires watermark text.
--watermark-position<corner|free>
Use a named corner or free placement.
--watermark-x, --watermark-y<0...1>
Normalized center for free placement; provide both.
Multi-size and batch automation
Use stable destination sets and make partial work visible to CI.
--presets<ids|all>
Multi-size destination ids, comma-separated; all is the default.
--recursive
Walk nested batch folders and preserve relative paths.
--dry-run
Discover and load batch inputs without writing artifacts.
--include-ext<list>
Only consider comma-separated extensions.
--exclude-ext<list>
Ignore comma-separated extensions before loading.
--fail-on-empty
Exit non-zero when no file would render.
--fail-on-skipped
Exit non-zero after completing when any input was skipped.
--skipped-report<json>
Write a machine-readable skipped-file report.
--manifest<json>
Write successful or planned output paths and dimensions.
Accessible source sidecars
Ship selectable source next to the image without changing the rendered pixels.
--text-sidecar
Write a plain-text .txt file.
--markdown-sidecar
Write a Markdown image reference and fenced source.
--html-sidecar
Write an HTML image embed and escaped source.
--sidecars<text,markdown,html|all>
Enable several sidecars in one option.
05 · Workarounds
Common problems and workarounds
Differences between Homebrew, DMG, App Store, and development builds explain most installation issues.
vitrine: command not found
With Homebrew, run brew reinstall --cask johnny4young/tap/vitrine. With the DMG, open Settings ▸ General ▸ Command-line tool ▸ Install… or create the manual link documented in README.
“Vitrine PRO is required”
Basic vgrab is free. For render, multi-size, batch, or vpane, activate the license in the direct-download app and retry. Release builds ignore VITRINE_PRO_UNLOCK by design.
The App Store build has no binary
That is intentional: this channel does not distribute tools on PATH. Install the signed DMG or Homebrew cask to use the CLI.
Language inference chose incorrectly
Pass --language <id>, or add --stdin-name with a useful extension when piping. Inspect vitrine list languages for valid ids.
The output already exists
Omit --no-overwrite to replace it, choose another --out, or remove the old artifact. Batch reports existing targets as skipped.
Text remains after --blur-box
--blur-box changes pixels only. Use --redact-lines or --redact-secrets to sanitize copyable sidecars too.
A pipe loses ANSI colors
Many programs disable color outside a TTY. Use vgrab, or force color in the producer before piping into vitrine render --stdin.
I need to inspect the result before export
Replace --out or --copy with --edit. Vitrine opens the source in the editor for manual styling and annotation.
Privacy boundary
Rendering code, terminal output, and local images needs no network, Screen Recording, or Accessibility. A recipe loads only when you pass --recipe; Git runs directly without a shell, pagers, textconv, or implicit fetches.
No matching option. Try render, Git, recipe, redaction, or batch.