Skip to main content
Slurp is a templating engine. Pages, components and layouts are written as .slurp files and compiled to plain HTML on the server. No framework is shipped to the browser: a visitor downloads the generated HTML, and the client runtime is optional. It is comparable to a small Astro.
Slurp renders templates the host did not write: themes from a marketplace, a customer, or a model. Two design choices follow from that.

No code runs at render time

One pass over a JSON context. No reactivity, no callable functions, no template-defined logic that could reach the host. A template is data transformed into markup, not a program.

Escaped by default, per context

An interpolation is escaped for the exact place it lands: HTML text, an attribute, a style attribute, a srcdoc, or a JavaScript string.

Sections and blocks

A template declares a typed schema in its frontmatter. The values become editable fields, so a non-technical person can change a heading, swap an image or reorder a list through a form, and the template stays untouched.
The schema lives in the template, so it cannot drift from the markup.

Failure behaviour

Slurp is total and tolerant. Missing data renders as the empty string, resource budgets truncate rather than abort, and unknown editor settings are dropped rather than rejected.
Most Slurp mistakes are silent. A typo in a property name renders nothing rather than raising, so a broken template usually produces a plausible page instead of an error. Build with --verbose while developing, and read Common mistakes.

Next

Quickstart

Build and render a real page in about five minutes.

Installation

The CLI, the optional runtime, and the editor tooling.

Writing pages

File-based routing, page data, and output paths.

Working with agents

The MCP server and llms.txt files for coding agents.

Status

Slurp is 0.1.0, pre-1.0. The template language and the Rust API will both change without a deprecation cycle until 1.0. It was extracted from a production system where it renders multi-tenant sites, so parsing, rendering, escaping and the resource budgets are exercised daily. The edges are less settled: parts of the browser runtime are not yet wired to compiler codegen and ship under experimental/, and the editor tooling and the compiler disagree on a few points of syntax, where the compiler is right.