Skip to main content

Akceo

Build self-contained HTML slide decks from Markdown.

You write slides in one Markdown file and run one command. You get a single HTML file with every image embedded in it. Large PNG, JPEG and WebP images are shrunk first. Mermaid .mmd diagrams are checked at build time and drawn when the page opens, with a copy of Mermaid that akceo includes, so there's nothing else to install. The file has no external assets, so it opens straight from disk, works offline, and survives being emailed or copied anywhere.

Install

Needs Python 3.12 or newer. Install the akceo command from PyPI with uv or pipx:

uv tool install akceo
pipx install akceo

To try changes that aren't released yet, install from the repository instead:

uv tool install git+https://github.com/LunarCommand/akceo

To work on akceo itself, install your checkout in editable mode so the akceo command always runs your latest source:

git clone https://github.com/LunarCommand/akceo.git
uv tool install --editable ./akceo

Quickstart

Write deck.md:

title: Q3 Review
theme: midnight

---

layout: title
kicker: Q3 review
meta: Platform team · September 2026

# Shipping faster

---

kicker: The problem

## Builds take too long

- **Full rebuilds** on every change.
- CI queues back up at ==peak hours==.

Build it:

akceo build deck.md          # writes deck.html next to deck.md
akceo build deck.md -o talk.html --theme paper
akceo check deck.md          # runs every check, diagrams included, and writes nothing

Open deck.html in a browser to present:

Key Action
→, Space, PageDown, click right half Next slide
←, PageUp, click left half Previous slide
Home, End First, last slide
F Toggle full screen

A click while text is selected doesn't change slides, so you can copy text from a slide.

The address bar shows the current slide as #N, so deck.html#4 opens on slide 4 and a reload stays on the slide you were on.

examples/demo/deck.md uses every layout and markup feature. Build it with akceo build examples/demo/deck.md.

Layouts

Layout For Content
title Opening and section slides # heading, kicker, meta line
bullets Most slides (the default) ## heading, lead, list, paragraph
split A diagram with commentary image, ## heading, phases, lists, note
steps A sequence ## heading, paragraph, numbered list
table Comparisons ## heading, table
image A diagram on its own image, kicker

The full format is in docs/syntax.md. It covers config keys, slide keys, blocks and inline markup.

Themes

akceo themes                          # list the built-in themes
akceo build deck.md --theme paper     # a built-in theme
akceo build deck.md --theme brand.css # your own theme

A deck can also set theme: in its config block. The --theme flag overrides it.

midnight (dark, the default) and paper (light) are built in. A custom theme is a CSS file that sets akceo's color and font tokens. The simplest start is a copy of src/akceo/themes/midnight.css. The token list is in docs/syntax.md.

Speaker notes

Keep your notes in a Markdown file and read them in a second browser tab, while you share only the deck tab in your call.

akceo viewer    # writes md-viewer.html into the current folder

Open md-viewer.html next to your deck, for example with Chrome's split view, and open your notes file in it. In Chrome and Edge it refreshes by itself when you save the notes. examples/demo/speaker-notes.md goes with the demo deck. The setup is in docs/speaker-notes.md.

How it works

docs/how-it-works.md explains Akceo at three levels: in plain terms, from the user's side, and under the hood. It has diagrams of the build pipeline, the data model and the notes viewer.

Development

uv sync
uv run pytest
uv run ruff check . && uv run ruff format --check .
uv run pyright
uv run pre-commit install   # optional: run these checks on every commit

Releases are published to PyPI by pushing a version tag; docs/RELEASING.md has the steps.

Branding

Akceo comes from the Latin actio, "the act of doing". The spelling ends in ceo to tie it to the executives who give so many decks: executive action. The full naming rationale is in docs/branding.md. The domain is akceo.ai.

License

MIT. See LICENSE.

Release files for akceo 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for akceo 0.1.0
File Size Uploaded
akceo-0.1.0.tar.gz 1.7 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for akceo 0.1.0
File Interpreter ABI Platform
akceo-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 3.4 MB

Release files / akceo-0.1.0.tar.gz

Download URL akceo-0.1.0.tar.gz
Size 1.7 MB
Tags Source
SHA-256 checksum
How to use checksums
9ff77ac2a4c6b64e47000c3363448ecb8f54ab306d634fcb215d1d627460e0b9
BLAKE2b-256 checksum
How to use checksums
4a31caa94db69dead374999dffae02510872dbea42a35ab2f37ec75cb1513a3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / akceo-0.1.0-py3-none-any.whl

Download URL akceo-0.1.0-py3-none-any.whl
Size 1.7 MB
Tags Python 3
SHA-256 checksum
How to use checksums
d921264f92bc1c84358c6b07ee069c04dcb15683b8b0f25043d976a1c46c8675
BLAKE2b-256 checksum
How to use checksums
e0d1d07d68f77714ee52e8a6e96186f544f5c50d11e3868bd724f03f4ff90864
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page