eigen

A static site generator that thinks in fragments.

site.toml
[site]
name = "my-site"
base_url = "https://example.com"

[build]
fragments = true
clean_links = true

[sources.api]
url = "https://api.example.com"

Features

HTMX Fragments

Every template block becomes a standalone fragment. Click a link, swap a div — no full page reload. Navigation that feels like an SPA, built with zero JavaScript frameworks.

Data From Anywhere

Pull data from local YAML files, REST APIs, Notion, or GraphQL. One config block per source. Caching, rate limiting, and auth headers built in.

Dynamic Pages

Name a template [slug].html and point it at a collection. Eigen generates one page per item — blog posts, product pages, docs — from a single template.

Built-in Optimization

Critical CSS inlining, image lazy loading, CSS/JS bundling with tree-shaking, content-hashed assets, HTML minification. All on by default.

Incremental Builds

Only re-renders pages whose templates, data, or config actually changed. Two-tier hashing keeps rebuilds fast even on large sites.

Single Config

One site.toml file configures everything — data sources, SEO defaults, build optimization, analytics, redirects, feeds. No plugin ecosystem to navigate.

SEO Out of the Box

Auto-generated sitemap, robots.txt, Open Graph tags, Twitter cards, JSON-LD structured data. Configure once at the site level, override per page.

Rust Performance

Async build pipeline on Tokio. Concurrent page rendering, parallel data fetching, non-blocking I/O. Builds your site as fast as your machine allows.

How It Works

01

Write templates

{{ post.title }}

{{ post.body | markdown }}
02

Configure data

data:
  posts:
    source: blog_api
    path: /posts
    limit: 10
03

Build & deploy

$ eigen build
  Rendered 47 pages
  Extracted 47 fragments
  Built in 0.8s
cargo install eigen

Read the quickstart guide →