Your terminal
build, preview with live reload,
validate. One npx lutrin, no project to
scaffold.
markdown in · a real deck out
Lutrin compiles Markdown into an editable
.pptx or a standalone HTML page. You write the content;
the engine picks the layout, places every block and holds the brand.
There is no box to nudge, because you never drew one.
npx lutrin build deck.md -o deck.pptx
HEAD. Nobody placed the quadrants.the part nobody hired you for
One of them is thinking about what you have to say. The other one is this, and it is the one that runs long:
Lutrin does none of this, because you never do it. The layout comes from the structure of what you wrote — headings, lists, directives — and the engine does the geometry. Change the numbers on Thursday and rebuild: the deck relays itself.
source · output
Not an excerpt with the styling omitted — the whole thing.
No coordinates, no CSS, no theme to wire up. The panel on the right is
the real deck, recompiled from
examples/demo.deck.md
on every push to main.
# Request triage
<!-- layout: funnel -->
## 2,400 received
All channels combined.
## 1,100 eligible
After checking the criteria.
## 320 selected
Funded this year.
# Indicators
:::metric
33
Layouts available
↑ +2 this release
:::
:::metric
15
Chart types
↑ +7 this release
:::
:::metric
0
Coordinates in this file
→ by design
:::
# Budget by quarter
The chart is drawn by the engine, in the
brand's colours, on a palette checked for
contrast and colour blindness.
```chart
type: bar
categories: Q1, Q2, Q3, Q4
Planned: 120, 150, 180, 210
Actual: 110, 155, 175, 190
target: 165
```
One layout hint, and the engine does the geometry. Leave it out and the layout is inferred from the shape of the content.
Three
:::metric directives, three cards. The arrow picks its own
colour — and (+) flips it when a fall is good news.
A fenced
chart block, drawn by the engine — the same geometry in the
HTML and in the .pptx.
These three are somebody else's content. Put in your own: the playground loads this same compiler into your browser and recompiles as you type — nothing installed, and nothing sent anywhere.
three doors
build, preview with live reload,
validate. One npx lutrin, no project to
scaffold.
The preview follows your cursor. Problems are underlined where you typed them, with quick fixes and one-key export.
A skill an agent can drive: write, validate, fix, build — and look at the result before handing it over.
Your organization's brand travels as a kit:
theme, layouts, fonts and logos in one archive — data, never code.
lutrin kit install <url>, and every deck is on brand
without a single style decision of yours.
Eight of them are installable right now, each
one showing the same slide compiled inside it — the words held still so
that everything that moves is the brand. Building your own is its own
workbench: the kit editor puts every colour,
font and layout beside a deck the engine just compiled.
the price
Everything works without a licence — every layout, every kit, every export. A deck compiled without one carries a discreet Made with Lutrin at the bottom right of each slide. A licence removes it. That is the entire difference: no watermark, no slide cap, no feature held back.
where most people start
$59 USD / year
One person. Every machine you work on.
$449 USD / year
Up to ten people, one organisation.
$2,990 USD / year
One legal entity, unlimited people.
Thirty people rather than ten, or a licence bought once rather than every year? The full price list has all five options side by side, in USD and in CAD.
A seat is a person, not a machine: install Lutrin on your laptop, your desktop and the build server, they all run on the same key. Buy, invite people by email, and Polar does the rest — it issues the keys, hosts the customer portal and emails everyone their link. Activate once, then compile offline: a licence keeps working for 30 days without reaching the network, and forever without leaving your machine.
No. The attribution is decided once, while the deck is being
compiled, and written into the file itself; nothing ever reopens a
.pptx you have already exported. A deck built while
licensed stays clean forever, whatever happens afterwards. The reverse
holds too: buying a licence does not clean up old files — you rebuild
them.
One line of text, and nothing else. Every layout, every chart, every kit and both export formats are there either way; there is no slide cap, no export limit and no feature behind the licence. The compiler asks the licence exactly one question — whether to paint the attribution — and it asks it in the editor previews too, so what you look at while writing is what you will hand over.
A seat is a person; the machine count is a property
of the key, and the keys sold today set no limit. Your laptop, your
desktop and a build server all run on the same one. If a key ever does
carry a limit, lutrin license status prints it, and
re-activating on a machine that already holds an activation releases
the old one first — a reinstall never costs you a second.
You compile. Reading the licence is a read of one small local file —
there is deliberately no network on the compilation path, so a build
never waits on anything and never fails because the connection is
down. A licence keeps applying for 30 days without a
successful check; past that, run lutrin license status
once while online and the clock resets. Only the very first activation
truly needs the network.
Yes. lutrin license deactivate on the old one frees it,
lutrin license activate <key> on the new one takes
it. If the old machine is gone or offline, activate on the new one
anyway and free the stale activation from the Polar customer portal.
Copying the licence file across by hand is the one thing that does not
work: it is sealed to the account and machine it was activated on, and
a copied file is ignored rather than honoured.
Nothing. There is no telemetry in Lutrin. The only network a build makes is for content your own deck asks for — an image you referenced by URL, an icon not yet in the local cache. Separately, and at most once a week, the CLI checks your licence with Polar after the deck has been written; that request carries your key, an activation id and the organisation id. No file names, no deck content, no counts.
Yes, and nothing in the tool treats a build server differently from
your laptop: lutrin license activate <key>, and it
compiles. One practical note for ephemeral runners — a fresh container
has no local record to release, so each run takes a new activation.
That is harmless on today's keys, which set no activation cap; if you
would rather not, cache the config directory between runs and point
LUTRIN_CONFIG at it — which works as long as the runner
image stays the same one, since the record is sealed to the account
and platform that activated it.
Through Polar, which sells the licences and is the merchant of record: the receipt, the invoice and the cancellation all live in the customer portal it emails you a link to, and the tax treatment shown at checkout is the one that applies to your country. For anything your finance team needs in a particular form — a purchase order, a framework agreement, an invoice raised before payment — write to contact@lutrin.app and it gets handled by a person.
the deal
Put one element at one exact spot. There is no escape hatch and no CSS override, and that is the whole trade: you give up the pixel, you get back the afternoon.
So if a slide has to be art-directed, use something that art-directs. reveal.js and Slidev go much further on the web, Marp is mature and its CSS themes will feel familiar, Pandoc converts anything into anything. Lutrin is for the deck you have to ship on Thursday, in your organization's colours, without opening a design tool.
Written out properly, one page each, checked against their own current documentation: vs Marp, vs Slidev, vs reveal.js, vs Pandoc.