Static sites that think in fragments.
Every template block becomes an htmx fragment. SEO tags, sitemaps, and structured data generate automatically.
One binary, all of this.
Templates, data fetching, optimization, and SEO. One config file, millisecond builds.
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.
Three steps to production.
Write templates, configure data, build and deploy. No plugins, no framework lock-in.
Write templates
Jinja2 templates with frontmatter. Define data sources, SEO, and schema in YAML. Use blocks for fragment boundaries.
Configure data
Pull from local YAML, REST APIs, GraphQL, or Notion. One config block per source with caching and auth built in.
Build & deploy
Async Rust pipeline renders pages, extracts fragments, optimizes assets. Deploy the dist folder to any CDN.
Up and running in seconds.
One config file. One build command. Zero JavaScript frameworks.
# site.toml
[site]
name = "my-site"
base_url = "https://example.com"
[build]
fragments = true
clean_links = true
# Data from anywhere
[sources.api]
url = "https://api.example.com"You're looking at it.
This site is built with eigen. View the source or start your own.