Bengal in Five Minutes

Build and serve a Bengal site in five minutes. What the commands do, what the output looks like, and where to go next.

If you want the shortest possible path to a running Bengal site, this is it.

uv python install 3.14t
uv run --python=3.14t pip install bengal
bengal new site my-site && cd my-site
bengal serve

That gives you a local server, live reload, and free-threaded rendering. Open http://localhost:3000.


What just happened

Bengal detected free-threading at startup and enabled parallel rendering. Content is parsed by Patitas, templates are rendered by Kida, and code blocks are highlighted by Rosettes. On Python 3.14t, those stages can run in parallel without GIL contention.

The generated site is small enough to understand at a glance:

my-site/
├── bengal.yaml       ← site config
├── content/          ← markdown files
│   └── posts/
├── templates/        ← Kida templates
├── static/           ← assets (CSS, images)
└── public/           ← build output (generated)

Add a post

bengal new page my-first-post --section posts

Edit content/posts/my-first-post.md, save, and watch the browser update. The dev server watches for changes and rebuilds only the affected pages, which is why single-page edits typically come back in 35-80 ms.


Build for production

bengal build

Output goes to public/. From there you can deploy to GitHub Pages, S3, Cloudflare Pages, or a plain nginx server. There is no runtime to manage after the build.


Further reading