Fast. Incremental. Inspectable.

The
「240fps」
hypertext engine

The developer system for addressable source, data, and rendered fragments. Build fast incremental sites, inspect every representation, preview safely, and hand exact graph context to agents.

Incremental by default Protocol-native addresses Live inspection everywhere
Source
<set key="campaign"
     value="{{ data://campaign.json }}" />

<h1 id="campaign-title">
  {{ campaign.client }} Campaign
</h1>
src://components/component-bound.html
Data
{
  "title": "Corpus Campaign",
  "client": "Corpus Client",
  "adCount": 2,
  "assets": [ ... ]
}
data://campaign.json
Rendered
<h1 id="campaign-title">
  Corpus Client Campaign
</h1>
rendered://public/components/component-bound.html

Addressable. Composable. Inspectable.

Addressable fragments

Every source, data, and rendered fragment has a stable protocol-style address.

src://components/component-bound.html

Incremental rebuilds

Fine-grained dependency graph and change propagation for sub-100ms rebuild loops.

rendered://public/index.html

Source data rendered inspection

Follow any fragment across its representations live in the browser or CLI.

rendered://public/index.html

Safe preview worktrees

Feature branches get isolated worktrees and environments for live preview.

hypermake branches list

Agent-aware workflows

Deterministic builds, JSON interfaces, and clean addresses for automation.

concept://ax-packet

One system. Three representations.

Hypermake and LZR treat your content as a graph of fragments. Each node can be viewed as source, data, or rendered output, individually addressable and inspectable.

source src://components/component-bound.html data data://campaign.json rendered rendered://public/components/component-bound.html
Source, data, and rendered previews Sidecar-driven
Sourcesrc://components/component-bound.html
<set key="campaign" value="{{ data://campaign.json }}" />
	<scenario-layout
		title="Component-bound rendered effects"
		family="component invocation and prop lineage"
		source="src://components/component-bound.html"
		rendered="rendered://public/components/component-bound.html"
		coverage="component prop changes, source ownership, rendered-effect proof"
	></scenario-layout>
	<test-panel label="What this page tests" tone="blue">
		<p>Component invocation attributes, component-bound text, and data-backed rendered effects.</
Datadata://campaign.json
{
  "title": "Corpus Campaign",
  "client": "Corpus Client",
  "url": "/campaign.html",
  "adCount": 2,
  "newsletterCount": 1,
  "assets": [
    {
      "src": "/assets/banner.jpg",
      "alt": "Banner asset"
    },
    {
      "src": "/assets/newsletter.jpg",
      "alt": "Newsletter asset"
    }
  ],
  "variants": [
    {
      "id": "banner",
      "width": 300,
      "height": 250
    },
    {
      "id": "newsletter",
      "width": 640,
      "height": 480
    }
  ]
}
Scopecampaign

campaign

title"Corpus Campaign"

client"Corpus Client"

url"/campaign.html"

adCount 2

newsletterCount 1

assets [2 items]

variants [2 items]

Renderedrendered://public/components/component-bound.html
<section class="card  campaign-header" data-panel="Campaign header"><h2>Campaign header</h2> <h1 id=campaign-title>Corpus Client Campaign</h1> <p class=scope-note>This page is intended to reproduce component/data-bound rendered-effect proof gaps.</p> </section>
Open the live scenario ->
fresh · 4e944d28326c… · generated from this project’s source, data, recorded reads, rendered bytes, and state-summary at build time

Built different on purpose.

Hypermake focuses on addressable fragments and inspection, not opaque page builds or client-side state hiding the real source of truth.

See the full comparison ->

Static-site generators

Page-level builds, full rebuilds on change, no live fragment inspection.

Hypermake + LZR

Fragment-level graph, source to data to rendered inspection, streamable HTML.

Generic SPA tooling

Client-side rendering, large bundles, state hidden in the browser.