A polyglot static site generator framework with MCP integration. Each engine implements the same SSG contract in a different programming language, bringing unique paradigmatic strengths.
Polyglot by design: Each language brings its paradigm. Forth's stack-thinking, Ada's contracts, Haskell's purity—these aren't obstacles, they're features.
No lowest common denominator: Engines aren't constrained to match each other. Forth Estate embraces stack manipulation. Webforge could use SPARK proofs.
MCP as unifier: The protocol layer provides uniformity; the implementations provide diversity.
Educational value: Seeing the same problem solved across paradigms teaches more than any single implementation.
| Language | Name | Status | Notes |
|---|---|---|---|
| Forth | Forth Estate | In Progress | Stack-based paradigm |
| Ada | Webforge | Planned | SPARK subset for verified templates |
| Chapel | ParallelPress | Planned | Data-parallel builds |
| Haskell | HakyllLite | Planned | Simplified Hakyll |
| Racket | PollenLite | Planned | Programmable publishing |
| Gleam | GleamSite | Planned | BEAM + types |
| OCaml | YoCamlLite | Planned | Applicative pipelines |
| Zig | ZigPress | Considered | Comptime template validation |
| Idris | ProvenPages | Considered | Dependent types for templates |
Each engine must:
-
Accept standard invocation:
cd engines/<engine-name> <build-command> <source-path> <output-path> -
Support common frontmatter:
--- title: string (required) date: ISO-8601 date (optional) template: string (optional, default: "default") tags: list of strings (optional) draft: boolean (optional, default: false) ---
-
Produce valid HTML5 output
-
Exit with code 0 on success, non-zero on failure
-
Write to stdout for progress, stderr for errors
poly-ssg/
├── engines/
│ └── forth-estate/ # Gforth-based SSG
├── docs/
│ ├── PHILOSOPHY.md
│ └── ADDING-ENGINE.md
├── test-corpus/
│ ├── posts/ # Sample markdown posts
│ └── templates/ # Shared templates
└── scripts/
└── test-all.sh # Run tests across engines
# Test Forth Estate (requires Gforth >= 0.7)
cd engines/forth-estate
gforth forth-estate.fs -e "s\" ../../test-corpus\" s\" output\" build bye"See docs/ADDING-ENGINE.md for the full guide.
MIT