Presenterm is my new favourite way to do presentations
I’ve gone through a few different setups for doing live demos in talks but nothing really clicked. Then I found presenterm and it just works.
I used it at the latest Cloud Native Oslo meetup and got a bunch of questions about the setup afterwards. It’s a great project that deserves more attention, so here’s a little writeup.
It’s just Markdown
Your slides are a single Markdown file. You run it with:
presenterm my-talk.md
Slides are separated by --- and look like this:
# Deploying to production
We'll apply our manifests and watch the rollout.
---
# What we're deploying
- API service
- Background worker
```bash
kubectl apply -f .
```
If you’ve written a README you already know how to write a deck. Code blocks get syntax highlighting, images render inline if your terminal supports it (Ghostty and iTerm2 both do), and you can embed Mermaid diagrams directly:
```mermaid
graph LR
A[Ingress] --> B[Service]
B --> C[Pod A]
B --> D[Pod B]
```
The diagram renders inline at runtime, so there’s no PNG to export and no slide to update when something changes. The source lives in the same file as the rest of the talk. I’ve been using Claude Code to draft these, faster than drawing boxes in a GUI.
The bit that actually changed how I present
Split your terminal. Presenterm on the left, live shell on the right.
+---------------------------+---------------------------+
| | |
| # Deploying to Prod | $ kubectl apply -f . |
| | deployment.apps/api |
| We'll apply our | configured |
| manifests now... | |
| | $ kubectl get pods |
| | NAME READY |
| | api-7d9f... 1/1 |
| | |
+---------------------------+---------------------------+
slides live demo
No switching windows, no “hang on let me pull up the terminal”. The demo just happens next to the slide. This was the thing people kept asking about at Cloud Native Oslo. I use Ghostty but any terminal with split pane support works.
Everything stays in your repo
Because it’s all text it lives alongside the code you’re talking about. You can PR slides, diff them, see exactly what changed between the version you rehearsed and the version you gave. Compare that to a .pptx sitting in someone’s Google Drive.
A few gotchas
Terminal image support varies. Worth checking before you’re standing in front of an audience.
Mermaid needs the CLI installed. Presenterm shells out to mmdc:
npm install -g @mermaid-js/mermaid-cli
Bump your font size. Whatever you normally use is what the audience sees. It’s usually not enough.
Getting started
brew install presenterm
presenterm talk.md
The docs cover theming, transitions, and image protocol setup. If you do technical talks and find yourself context-switching between slides and a terminal mid-demo, this is worth half an hour of your time.