hadley.

Static Site Generator / offen, kostenlos, privat

Just write. Own your site.

Ein Static Site Generator mit einem Editor direkt auf der Seite, allen Fassungen deiner Seiten ohne Git und einem eigenen Kommentardienst. Ein Programm auf deinem Rechner – quelloffen, kostenlos, ohne Konto und ohne Tracking.

Für alle, die schreiben – Autorinnen, Blogger, alle mit einer eigenen Site – und lieber schreiben als basteln.

Hier geht es los

In einer Zeile installiert.

Shell · 0.4.0Erste Schritte →
$ curl -fsSL https://hadley.sh/install.sh | sh
$ hadley init ~/my-site
$ cd ~/my-site && hadley dev

Für Linux (glibc), macOS und WSL, ohne weitere Voraussetzungen. Unter Windows lädst du das Programm aus den Releases auf GitHub. Mit Node.js 24 geht es auch über npm.

Für dich · alles dabei

Just write.

01

Editor auf der Seite

Bearbeitungsmodus an, Doppelklick auf einen Block der Seite im Browser, und du schreibst. Markdown bleibt Markdown und landet in der Datei, aus der es kam.

02

Fassungen ohne Git

Jede Seite behält ihre Fassungen, egal wer sie geändert hat: du, ein anderer Editor, ein Agent. Wort für Wort vergleichen, rückgängig machen, wiederherstellen.

03

Eigene Kommentare

Besucher schreiben ohne Konto und ohne fremden Captcha-Dienst. Du gibst auf deinem eigenen Rechner frei, und die Kommentare werden Teil des Artikels, abgelegt in seinem Ordner.

04

Suche eingebaut

Sie läuft auf der Site selbst, mit einem Index je Sprache. Ohne Suchdienst.

05

Mehrere Sprachen

Eine Site, jede Seite mit ihren Übersetzungen verknüpft – und Feldnamen im Front Matter in deiner Sprache: titel:, 題名:, autor:in:.

06

Bilder, Feeds, bereit für KI

Jede Breite, die das Theme braucht, Link-Vorschauen, Sitemap, Feed und llms.txt für Sprachmodelle.

Für deine KI · wenn du willst

Bring your AI.

Ein Agent kann hadleys ganze Doku lesen, Markanto und Lima eingeschlossen: rund 26.000 Tokens. Jede neue Site bekommt eine AGENTS.md, die einem Agenten sagt, welche Doku er wofür lesen soll, und jede Site veröffentlicht eine llms.txt für Sprachmodelle, auf Wunsch mit ihren Seiten als Markdown.

Gemessen im November 2026: Nur mit dieser Doku und ohne Zugang zum Web erledigte ein Agent fünf alltägliche Aufgaben auf einer neuen Site – einen Artikel in zwei Sprachen, eine Notiz, ein Autorenprofil, ein dauerhaft dunkles Design, Kommentare. Er brauchte keine vier Minuten, und die Site ließ sich ohne Problem erzeugen.

Im Editor arbeitet der Agent, den du schon nutzt – Claude Code oder Codex – in einem Panel neben der Seite, mit dem Abo, das du schon hast. Bevor er eine Datei schreibt, einen Befehl ausführt oder ins Netz geht, fragt er dich um Erlaubnis, und jede seiner Änderungen an einer Seite ist eine Fassung, die du zurücknehmen kannst. Was du ihm gibst, geht an seinen Anbieter. Der Chat bleibt aus, bis du ihn einschaltest; den Agenten aus dem Panel zu starten, ist noch experimentell.

Fürs freie Web

Own your site.

Offen

hadley und seine eigenen Pakete sind ISC-lizenziert. Deine Seiten sind Dateien in Ordnern, in Formaten mit öffentlicher Spezifikation: Lima ist der Teil von YAML, den Front Matter braucht, Markanto ist Markdown, wie du es kennst, mit ein paar Dingen mehr. Wenn du gehst, gibt es nichts zu exportieren.

Kostenlos

Keine Bezahlstufe, keine Plugins zu kaufen, kein Abo. Geld kostet nur ein Server für die Kommentare, und ein kleiner genügt: Für den Preis eines Espresso im Monat laufen darauf mehrere Sites, Kommentare inklusive.

Privat

Seine Themes laden nichts von anderen Servern: keine Schriften, keine Skripte, keine Tracker, keine Cookies. Aus Fotos entfernt hadley vor der Veröffentlichung Orts- und Kameradaten, außer du willst diese Daten behalten. Auf dem Server gibt es keinen Editor und kein Login: Du schreibst auf deinem eigenen Rechner. Und ohne JavaScript bleiben die Seiten lesbar.

Das System

Vier Bausteine, ein Weg.

01

case

Liest eine Seite in einem Durchgang: Front Matter in Lima, Text in Markanto – Markdown, das für jede Bedeutung genau eine kanonische Schreibweise kennt.

02

galley

Bringt, was case gelesen hat, in Layouts (.chase) und Partials (.sort). Jeder Wert wird escaped, außer HTML, das hadley selbst erzeugt hat.

03

quad

Ordnet den Leerraum im HTML, so wie im Bleisatz die Quadraten den Raum zwischen den Lettern füllen. Synchron und ohne Abhängigkeiten.

04

publish

Die fertige Site für jeden Server: Seiten, Bilder in allen nötigen Größen, Stylesheets und Skripte mit Hash im Namen, Sitemap, Feed und Suche.

Ein Beispiel

Eine Seite, drei Ansichten.

01 · Quelle · article.md

---
veröffentlicht: 2026-09-16
autor:in: Noa
beschreibung: Schreiben ohne Umweg.
---

# Stille Seiten

Die Technik bleibt *klein*: ein Parser, ein Template, ein
Formatter --- und nichts, was sich nicht an einem Nachmittag lesen ließe.

## Worauf es ankommt

Wer es lesen kann, kann es ändern.

Lima und Markanto

Das Front Matter ist Lima, ein kleines Format, in dem jede Zeile genau eine Sache bedeutet. Der Text ist Markanto: Markdown, das für jede Bedeutung genau eine Schreibweise kennt. Die erste Überschrift wird zum Titel.

Ein Bundle: In content/articles/[stille-seiten]/ liegen die Seite und ihre Bilder. Die Schlüssel schreibst du in deiner Sprache und genderst sie, wie es dir passt: config.lima nennt veröffentlicht, autor:in und beschreibung als andere Namen von publishFrom, author und description.

02 · Template · article.chase

<!DOCTYPE html>
<html lang="{ meta.lang }">
<head>
  <meta charset="{ meta.charset }">
  <title>{ htmlTitle }</title>
  <link rel="stylesheet" href="{ assets['/assets/css/style.css'] }">
</head>
<body>
  <article>
    <h1>{ meta.title }</h1>
    <p class="lead">{ meta.description }</p>
    {@raw html.markup}
  </article>
</body>
</html>

Ein galley-Template

Layouts heißen .chase, Partials .sort. { meta.title } wird escaped ausgegeben; HTML kommt nur aus dem, was hadley selbst erzeugt hat: {@raw html.markup}.

Das Theme gehört der Site: theme/templates/article.chase.

03 · Ausgabe · index.html

<!doctype html>
<html lang="de">

<head>
  <meta charset="utf-8">
  <title>Stille Seiten</title>
  <link rel="stylesheet" href="/assets/css/style.df7a3c80.css">
</head>

<body>
  <article>
    <h1>Stille Seiten</h1>
    <p class="lead">Schreiben ohne Umweg.</p>
    <p>Die Technik bleibt <em>klein</em>: ein Parser, ein Template, ein Formatter — und nichts, was sich nicht an einem Nachmittag lesen ließe.</p>
    <h2 id="worauf-es-ankommt">Worauf es ankommt</h2>
    <p>Wer es lesen kann, kann es ändern.</p>
  </article>
</body>

</html>

Sauber gesetztes HTML

So schreibt der Build die Seite, gesetzt von quad. Die Typografie hat aus --- einen Gedankenstrich gemacht, und das Stylesheet trägt den Hash seines Inhalts im Namen.

In .hadley/publish/stille-seiten/index.html – bereit für jeden Server.

Eine Site ist ein Ordner

Drei Ordner, sauber getrennt.

01

content/

Was – das schreibst du

Seiten in Bundles: [id]/ enthält eine Seite und alle Dateien, die sie verwendet; @name/ fasst eine Collection zusammen. Weitere Sprachen bekommen im Bundle ihren eigenen Ordner.

content/
├── articles/
│   └── [stille-seiten]/
│       ├── stille-seiten.md
│       └── schreibtisch.jpg
└── pages/
    └── [ueber-mich]/
        └── ueber-mich.md
02

theme/

Wie – das gestaltest du

Templates, Partials, Styles und die Texte des Themes in jeder Sprache. Ein Theme wird in die Site kopiert und gehört dann ihr: ein Ausgangspunkt, kein Abo.

theme/
├── templates/
│   ├── article.chase
│   └── partials/
│       └── head.sort
├── assets/css/style.css
└── i18n/de.lima
03

.hadley/publish/

Das Ergebnis – das baut hadley

Alles, was hadley erzeugt, bleibt in .hadley/. Der Ordner publish/ darin ist die fertige Site, bereit für jeden Server.

.hadley/publish/
├── stille-seiten/
│   ├── index.html
│   └── schreibtisch-960w.webp
├── assets/css/style.4be1c0d2.css
├── sitemap.xml
└── feed.xml

Warum noch ein Static Site Generator?

Verständlich bis ins letzte Detail.

Nicht, weil die anderen schlecht wären. Hugo ist schnell, Astro flexibel, Eleventy pragmatisch. Aber bei keinem hatte ich das Gefühl, wirklich zu verstehen, was passiert: Ich lernte das Framework kennen, nicht seine Grundlagen.

hadley entstand aus dem Wunsch, jede Zeile erklären zu können. Mit den KI-Assistenten kam ein zweiter Grund dazu: Je kleiner und stimmiger eine Codebase ist, desto besser kann die KI helfen. Ein Agent kann hadleys ganze Doku auf einmal lesen.

Inhalte rein.
Statische Seiten raus.