Skip to content

Chromium setup

Viewing, authoring, and live-presenting a deck need only a normal browser. A few build-time features render slides headlessly, and those need a real Chromium binary. Chromium is optional: if you never use those features, you never need it.

FeatureCommand / APIWithout Chromium
Slide thumbnails (overview grid)liebstoeckel build, liebstoeckel live, buildDeck()Skips the capture and keeps building. The deck works; the overview grid falls back to a live render.
Regenerate thumbnailsliebstoeckel thumbsFails with an error.
Export to PNG or PDFliebstoeckel exportFails with an error.

The split is deliberate. build and live treat thumbnails as a best-effort enhancement, so a missing browser never blocks a build. thumbs and export exist only to produce that output, so they fail loudly instead of writing nothing.

Two ways, either works.

Install the Chromium that Playwright manages (liebstoeckel ships playwright-core, which has no browser of its own):

Terminal window
bunx playwright install chromium

Or point LIEBSTOECKEL_CHROMIUM at a Chrome or Chromium you already have:

Terminal window
export LIEBSTOECKEL_CHROMIUM=/usr/bin/chromium # or a full path to Chrome
liebstoeckel build my-talk

When a feature needs a browser, liebstoeckel looks in this order and uses the first binary that exists on disk:

  1. An explicit executablePath passed to the thumbnails/export API.
  2. The LIEBSTOECKEL_CHROMIUM environment variable.
  3. The Chromium installed by Playwright.

The existence check matters: Playwright reports a computed path even when nothing is installed, so liebstoeckel verifies the file is really there before trusting it. This keeps the “no Chromium” path honest in CI.

Capture launches Chromium with container-friendly flags so it runs without a GPU or user namespace:

--no-sandbox --disable-gpu --disable-dev-shm-usage --single-process --no-zygote

In a container image, either run bunx playwright install chromium during the build, or install your distro’s Chromium package and set LIEBSTOECKEL_CHROMIUM to it.

The “no Chromium found” message is expected if you never installed one. What follows depends on the command:

  • liebstoeckel build and liebstoeckel live log a note that thumbnails were skipped and finish normally. Provide a browser (above) to get the overview thumbnails back.
  • liebstoeckel thumbs and liebstoeckel export stop with an error that names both fixes (install Playwright’s Chromium, or set LIEBSTOECKEL_CHROMIUM).

To build without thumbnails even when a browser is present, set LIEBSTOECKEL_NO_THUMBS:

Terminal window
LIEBSTOECKEL_NO_THUMBS=1 liebstoeckel build my-talk

Comments

liebstoeckel

Code-first presentations your agent can author. One file out, no server.

© 2026 Leon Kaucher