Rustipo
Rustipo is an open-source, themeable static site generator written in Rust for blogs, notes, docs, personal sites, and other Markdown-first websites.
Rustipo is Markdown-first for content authoring and uses Tera templates for reusable layout.
Rustipo separates layout from color selection: theme controls structure, while palette
controls the generated color tokens.
Status
MVP complete, active post-MVP development.
Why Rustipo
Rustipo aims for a simpler shape than a full frontend framework:
- Markdown-first authoring instead of component-heavy content pipelines
- Tera themes for reusable layout without a JavaScript runtime requirement
- palettes as a separate concern from layout, so visual identity can change without rewriting templates
- built-in publishing outputs such as RSS, sitemap, search index,
robots.txt, and404.html - a small CLI that covers the normal authoring loop from
newtobuildand deployment helpers
Best For
Rustipo is a strong fit when you want to build:
- blogs and writing-focused sites
- notes or knowledge-base sites
- project or personal websites
- documentation sites with a static publishing flow
If you want a Markdown-first static generator with a smaller mental model than a full app framework, Rustipo is meant to feel approachable.
Quick Links

Rustipo's own docs site is built with Rustipo using the built-in atlas theme.
CLI Surface
rustipo new <site-name>rustipo checkrustipo devrustipo buildrustipo serverustipo theme listrustipo palette listrustipo palette use <id>rustipo theme install <source>rustipo deploy github-pagesrustipo deploy cloudflare-pagesrustipo deploy netlify
Installation And Quick Start
Install Rustipo from crates.io:
Install a prebuilt binary from the GitHub releases page:
- Linux x86_64:
x86_64-unknown-linux-gnu - macOS Intel:
x86_64-apple-darwin - macOS Apple Silicon:
aarch64-apple-darwin - Windows x86_64:
x86_64-pc-windows-msvc
- Download the archive for your platform from GitHub Releases.
- Extract it.
- Move
rustipo(orrustipo.exe) somewhere on yourPATH.
Create a site:
Choose a palette:
Preview locally:
Build static output:
Theme discovery:
Current built-in themes:
atlasjournal
Core Strengths
- Markdown content with YAML frontmatter and draft filtering
- Tera-based theme templates with inheritance support (
extends) - theme installation from GitHub shorthand, URLs, or local git repositories
- palette-driven styling with built-in and local palettes
- docs-oriented authoring features like:
- table of contents
- math rendering
- admonitions
- image captions and layout helpers
- internal link and deep-link validation
- built-in publishing outputs:
dist/rss.xmldist/sitemap.xmldist/search-index.jsondist/robots.txtdist/404.html
- deployment workflow generation for:
- GitHub Pages
- Cloudflare Pages
- Netlify
Local Development From The Repository
If you are working on Rustipo itself instead of the published crate:
Layout Without CSS Editing
Use config.toml for basic style controls:
[]
= "98%"
= "2rem"
= "center" # or "start"
[]
= "1.5"
= "\"Inter\", sans-serif"
= "\"Fraunces\", serif"
= "\"JetBrains Mono\", monospace"
[[]]
= "Inter"
= "/fonts/inter.woff2"
= "400"
= "normal"
Built-In Themes And Palettes
Built-in themes:
atlasjournal
Built-in palettes:
draculadefaultcatppuccin-frappecatppuccin-lattecatppuccin-macchiatocatppuccin-mochagruvbox-darktokyonight-stormtokyonight-moon
Anatomy Of A Rustipo Site
Rustipo projects are organized around a simple model:
- Markdown = content
- themes = layout
- palettes = colors
- static = assets
- dist = generated output
Typical project layout:
my-site/
config.toml
content/
index.md
about.md
resume.md
blog/
projects/
palettes/
dracula.toml
static/
fonts/
img/
js/
favicon.svg
custom.css
themes/
default/
theme.toml
templates/
static/
dist/
What each part is for:
config.tomlis the main site configuration file- site title, description, theme, palette, layout, and typography live here
content/is where you write Markdown content- each Markdown file becomes a page
content/index.mdis the homepagecontent/blog/is for blog postscontent/projects/is for project pages- nested custom pages are supported outside
blog/andprojects/
themes/contains reusable layout themestemplates/holds Tera HTML templatesstatic/holds theme CSS and theme assetstheme.tomldescribes the theme
palettes/is for optional local color palettes- built-in palettes are embedded in Rustipo
- local palettes let you add your own color systems with
*.toml
static/is for user assets copied into the final site- images, fonts, JavaScript, favicons, and optional
custom.cssbelong here
- images, fonts, JavaScript, favicons, and optional
dist/is generated output- Rustipo recreates it when you build
Authoring Model
content/is where authors write Markdown contentthemes/<theme>/templates/defines reusable layout with Tera templatesthemes/<theme>/static/contains theme CSS and assetspalette = "..."selects a built-in or local color palette- optional local palettes live under
palettes/<palette>.toml dist/is generated output only
Example Sites
Documentation
- published docs site
- published llms.txt
- docs site source
- Contributing guide
- Code of Conduct
- CLI reference
- Project structure
- Theme contract
- Theme Tera guide
- Content model
- Release and publish workflow
- Roadmap
- MVP checklist
- CI
- Technical debt
Contributing
Rustipo is an open-source project, and contributions are welcome across code, docs, examples, and bug reports.
Start here:
Quick contributor loop:
If your change affects the docs site:
License
MIT license (LICENSE.md).
Credits
Rustipo was inspired by my friend's project, Nerdfolio, created by @atasoya.