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.
What needs Chromium
Section titled “What needs Chromium”| Feature | Command / API | Without 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 thumbnails | liebstoeckel thumbs | Fails with an error. |
| Export to PNG or PDF | liebstoeckel export | Fails 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.
Provide a Chromium
Section titled “Provide a Chromium”Two ways, either works.
Install the Chromium that Playwright manages (liebstoeckel ships playwright-core, which has no browser of its own):
bunx playwright install chromiumOr point LIEBSTOECKEL_CHROMIUM at a Chrome or Chromium you already have:
export LIEBSTOECKEL_CHROMIUM=/usr/bin/chromium # or a full path to Chromeliebstoeckel build my-talkResolution order
Section titled “Resolution order”When a feature needs a browser, liebstoeckel looks in this order and uses the first binary that exists on disk:
- An explicit
executablePathpassed to the thumbnails/export API. - The
LIEBSTOECKEL_CHROMIUMenvironment variable. - 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.
Containers and CI
Section titled “Containers and 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-zygoteIn 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.
When no Chromium is found
Section titled “When no Chromium is found”The “no Chromium found” message is expected if you never installed one. What follows depends on the command:
liebstoeckel buildandliebstoeckel livelog a note that thumbnails were skipped and finish normally. Provide a browser (above) to get the overview thumbnails back.liebstoeckel thumbsandliebstoeckel exportstop with an error that names both fixes (install Playwright’s Chromium, or setLIEBSTOECKEL_CHROMIUM).
Skip thumbnails on purpose
Section titled “Skip thumbnails on purpose”To build without thumbnails even when a browser is present, set LIEBSTOECKEL_NO_THUMBS:
LIEBSTOECKEL_NO_THUMBS=1 liebstoeckel build my-talkCode-first presentations your agent can author. One file out, no server.
Comments