Fibel
Fibel publishes Markdown documentation as a server-rendered website with search, multilingual routing, and Markdown source pages for tools.
Fibel reads Markdown from a content directory and serves it as a website. The source files remain readable in the repository, and every page is additionally available as raw Markdown, so reviewers, scripts, and language models work from the same source the site is built from.
Every built-in capability is a plugin: Markdown rendering, layout, search, theme handling, i18n checks, and SEO output. The default set can be extended, individual plugins can be replaced, and the list can be assembled from scratch. Rendering, navigation, search, and routing therefore remain under project control rather than fixed by the framework.
Fibel runs on Bun and is configured in a single file. Content requires no build step, and rendered pages contain no client-side framework.
Quick start
bunx --bun @valentinkolb/fibel init
bunx --bun @valentinkolb/fibel devinit creates fibel.config.ts, a first page under docs/en/, and an assets/ directory. dev serves the project and reloads the browser when a file changes. The development server prints its URL on startup.
Projects worked on by coding agents should also install the Fibel agent skill:
bunx skills add ValentinKolb/fibelIt provides the current conventions for configuration, Markdown pages, raw .md routes, plugins, hosting, and verification, so agents work from the documented API rather than guessing.
Capabilities
- Pages generated from
docs/<locale>/**/*.md, with navigation, sections, and pagination derived from frontmatter. - Server-side search with a spotlight dialog, opened with
/orMod+K. - Native language routes and a language switcher that preserves the current page.
- Light and dark mode resolved on the server, so the first paint is already correct.
- Canonical URLs,
hreflangalternates, a sitemap, and structured data for search engines. llms.txtand raw.mdroutes for tools that read documentation directly.- A plugin API for replacing or extending any built-in behavior.
Machine-readable output
Documentation is increasingly processed by tools rather than read in a browser. Fibel exposes every page in a form those tools can consume, without a separate export step:
/en/configuration the rendered page
/en/configuration.md the Markdown source
/llms.txt an index of all pages, grouped by section
/llms-full.txt the complete documentation in a single fileThese are stable URLs, not file downloads. Pages excluded from navigation are excluded here as well.
Project structure
A Fibel project consists of a config file and a content directory. Assets are optional.
fibel.config.ts
docs/
en/
index.md
configuration.md
de/
index.md
configuration.md
assets/Each locale has its own directory. docs/en/configuration.md is served as /en/configuration and as /en/configuration.md. Pages sharing a slug across locales are treated as translations of one another, which determines both the language switcher and the hreflang output.
Page model
A page consists of frontmatter and Markdown content.
---
title: Configuration
navTitle: Configuration
section: Start
order: 2
description: Configure routes, locales, assets, theme, and plugins.
tags: [config, routing]
updated: 2026-06-09
---
# ConfigurationFrontmatter controls metadata, navigation, and the chips below the page title. All fields are optional: in the absence of title Fibel falls back to the first # heading, and in the absence of description to the first paragraph. The layout renders the title once and omits the first # heading from the body, so it never appears twice.
Next steps
Configuration covers project setup. Hosting describes running Fibel as a server or mounting it inside an existing application. SEO documents what search engines and language models receive. Built-in plugins lists the default capabilities, and Plugin API describes how to extend them.