Skip to content

Getting started

  • Bun 1.3+: liebstoeckel uses Bun as runtime, bundler, and test runner.
  • A browser. (Optional: a Chromium for build-time thumbnails and PNG/PDF export, see Chromium setup.)

The umbrella CLI scaffolds a workspace-wired deck:

  1. Create a deck:

    Terminal window
    liebstoeckel new my-talk # or: bunx @liebstoeckel/cli new my-talk --brand acme
  2. Install dependencies (links the workspace packages):

    Terminal window
    bun install
  3. Start the dev server (instant HMR + React Fast Refresh):

    Terminal window
    cd my-talk && bun run dev # http://localhost:3000 (set PORT to change it)

    To present a live session for a room instead (LAN by default, or through a public relay), use liebstoeckel live my-talk. See Live presenting.

A new deck looks like this:

  • Directorymy-talk/
    • package.json deps, scripts, and the files allowlist
    • index.html the page shell (sets data-brand)
    • main.tsx mounts <Present> with your slides
    • build.ts single-file build (+ thumbnails)
    • server.ts HMR dev server
    • bunfig.toml dev-server plugins (tailwind + mdx)
    • .gitignore
    • Directoryslides/
      • 01-intro.tsx

main.tsx wires a brand, plugins, and ordered slides into the engine:

main.tsx
import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import { Present } from "@liebstoeckel/engine";
import "@liebstoeckel/theme/styles.css";
import Intro from "./slides/01-intro";
createRoot(document.getElementById("root")!).render(
<StrictMode>
<Present title="My Talk" brands={["liebstoeckel"]} slides={[Intro]} />
</StrictMode>,
);
Terminal window
liebstoeckel build my-talk # → my-talk/dist/my-talk.html

The output is one self-contained .html (named after the deck: dist/<deck-slug>.html) with JS/CSS inlined, assets base64’d, and slide thumbnails embedded. Open it directly, email it, or host it anywhere static.

KeyAction
/ Spacenext reveal, then next slide
previous
ooverview grid
popen presenter window
ffullscreen · b blur screen
qshow the join QR (live) · t cycle brand
123…+Enterjump to slide · ? help

Comments

liebstoeckel

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

© 2026 Leon Kaucher