A local-first presentation tool for writing, editing, presenting, and exporting Markdown slides or self-contained HTML docs.
npm install -g deckrun Most slide tools are either bloated cloud apps that require clicking through nested menus or heavy web frameworks that take minutes to build.
deckrun is designed for engineers and speakers who want to write presentations in plain text with zero fluff. You write standard Markdown separated by --- or bring a single continuous HTML document. It spins up an instant local HTTP server at 127.0.0.1:7890 and presents your work in the browser with terminal aesthetics, live speaker tools, and headless 16:9 PDF export.
Binds strictly to 127.0.0.1. Nothing is uploaded, tracked, or sent to the cloud. Your decks live in browser local storage and files stay on your disk.
Present slide-by-slide Markdown decks with clamp-scaled typography or continuous-scrolling self-contained HTML documents with the presenter tool belt.
The editor preview iframe renders with the exact same parser and stylesheet as the presented output at 1600x900. What you see is byte-identical.
Press Cmd Shift S to download a clean 16:9 full-bleed PDF rendered via headless Chromium. No print dialogs, no broken margins.
Everything you need to author, present, annotate, and distribute technical presentations.
Run deckrun with no arguments to launch the built-in editor. Write Markdown on the left, watch your slide update live on the right.
--- with its slide number; moving the caret automatically flips the live preview to that slide.Choose from 8 dark and 6 light carefully calibrated themes. Each theme defines its own display, body, and monospace faces, Highlight.js code grammar colors, and drifting background geometry:
midnight dark Catppuccin Mocha. Violet on deep indigo, drifting orbs.
tokyo dark Tokyo Night. Neon cyan over a wireframe grid.
nord dark Arctic frost blue on polar slate, with contour waves.
dracula dark Purple and hot pink over charcoal, lit by a gradient mesh.
gruvbox dark Warm amber and moss on retro brown, hatched graph paper.
rosepine dark Rosé Pine. Muted iris and gold on plum, slow aurora.
forest dark Everforest sage on deep pine, concentric rings.
neon dark Electric cyan and magenta on true black, light beams.
daylight light Catppuccin Latte, contrast-tuned for projectors. Dot matrix.
arctic light Nord inverted. Frost blue on cool paper with contour waves.
solarized light Classic low-glare cream, paired with Lora for long prose.
paper light Crimson serif on warm cream. Editorial, print-first, legible.
rosequartz light Rosé Pine Dawn. Blush and iris on linen, soft orbs.
swiss light Black on white, one red. Heavy grotesk, tight tracking, hard grid.
Backdrops (orbs, grid, dots, topo, beams, rings, waves, mesh, aurora, none) are written in pure CSS gradients—they drift smoothly, respect prefers-reduced-motion, and print cleanly into PDF exports.
Typography scales intelligently across four presets (s, m, l, xl). Rather than applying a blunt multiplier, headings and body text scale proportionally to ensure back-row legibility in conference halls without overflowing headings.
Choose display and body faces independently from 20 bundled Google Fonts (including Inter, Space Grotesk, Sora, Manrope, Playfair Display, Fraunces, Newsreader, JetBrains Mono, and Fira Code) via --head-font and --body-font.
Present seamlessly with keyboard shortcuts or clicker-friendly footer controls:
Control slide layouts directly through standard Markdown image title syntax without touching CSS:
 # Split layout: content left, image right
 # Split layout: image left, content right
 # Full bleed background image with opacity
<iframe src="https://www.youtube.com/embed/..." allowfullscreen></iframe>
<video src="demo.mp4" controls muted loop></video>
Press <kbd>Cmd</kbd> <kbd>K</kbd> to drop latency to <mark>4.1ms</mark>.
Add speaker notes using HTML comments (<!-- notes: My notes -->). Notes are automatically stripped during projection and PDF export so they never leak to your audience.
Exporting your deck takes one click or shortcut (Cmd Shift S):
.html file with inlined runtime and styles that opens and presents directly from disk or static hosting.deckrun pairs seamlessly with agentic AI workflows. Use Claude Code skills to convert articles directly into presentation-ready decks or HTML pages:
blog-to-slides: Converts long-form articles into structured Markdown decks with --- breaks, code snippets, and ASCII diagrams.ape-present: Turns blog posts into rich, animated continuous HTML presentations.
Run deckrun [file] [options] from your terminal.
# Launch the dual-pane live editor
deckrun
# Present a Markdown slide deck
deckrun slides.md
# Present a continuous self-contained HTML page
deckrun page.html
# Custom theme, size, and port
deckrun slides.md --theme paper --size xl -p 3000
# Custom typography pairing
deckrun slides.md --head-font playfair --body-font lora
# Launch directly into fullscreen on first click
deckrun slides.md --fullscreen | Flag / Option | Default | Description |
|---|---|---|
[file] | — | Markdown or HTML file to present. Omit to open the editor. |
-p, --port <num> | 7890 | Port to serve the presentation or editor on. |
--theme <name> | midnight | Any of the 14 built-in themes by ID. |
--size <s|m|l|xl> | m | Type size preset tuned for room reading distance. |
--head-font <name> | theme | Override heading face independently (20 fonts). |
--body-font <name> | theme | Override body face independently. |
--fullscreen | false | Prompt to enter fullscreen on first key/click. |
--no-open | false | Start the HTTP server without opening browser tab. |
--list-themes | — | Print all themes with mood and blurb, then exit. |
--list-sizes | — | Print all type sizes and their use cases, then exit. |
--list-fonts | — | Print all 20 Google Fonts and categories, then exit. |
Every action in deckrun is keyboard-accessible. Press ? at any time during a presentation to view the overlay.
A complete starter deck demonstrating titles, split images, code highlighting, and speaker notes:
# Scaling Distributed Systems
Building resilient, event-driven architectures in production.

<!-- notes: Introduce talk context and team background. -->
---
## Architectural Overview
- Microservices communicate over gRPC for low-latency RPCs
- Events stream through Apache Kafka for durable message logs
- Read replicas scale consumer queries horizontally

<!-- notes: Walk through the request path from gateway to storage engine. -->
---
## Consumer Worker Implementation
```go
func (w *Worker) ProcessEvent(ctx context.Context, msg *kafka.Message) error {
ctx, cancel := context.WithTimeout(ctx, 5*time.Second)
defer cancel()
if err := w.store.Save(ctx, msg.Value); err != nil {
return fmt.Errorf("failed to persist event: %w", err)
}
return nil
}
```
---
# Summary
- Favor asynchronous message passing for decoupled services
- Apply database timeouts at connection and role layers
- Use structured event logs for auditing state mutations