๐Ÿฅ“ ๐ŸŒญ

One File. One Runtime Contract.

One Wurst.

Package a normal HTML/CSS/JavaScript mini-app as one portable .wurst or .wrst file. Keep application data inside WurstFS, stream large content in slices, and let each conforming Wurster runtime handle its own platform details.

Source pig โ€” your HTML/JS/CSS app your web app
→
MeatGrinder MeatGrinder
→
.wurst file my-app.wurst

✦ Made of 100% Pork Meat — No animals were harmed ✦

The .wurst Format

A tiny random-access binary container for an app, immutable resources and optional mutable WurstFS data.

Conforming Wurster Runtimes

The runtime implementation may differ per platform; the Wurst format and portable behavior stay the same.

MeatGrinder

Drop in a browser-ready folder or ZIP. Special Wurst behavior is optional rather than a new programming model.

Why a Wurst?

Because applications and their data deserve a portable existence outside one browser profile, marketplace or mandatory cloud.

๐Ÿ”
Federated signatures
Sign locally with Ed25519. Add optional domain, local-trust or Authority identity without making any central service mandatory.
๐Ÿ“
WurstFS
Create, read, update, delete, stream and compact app-owned files inside the Wurst itself โ€” plain or Meatphrase-sealed.
๐Ÿ”ช
Sliceable & streamable
Large Wursts can be inspected and read by byte range instead of downloading or loading the whole binary first.
๐Ÿฅท
Undercover Wurst
Carry the same WRST payload inside a valid PNG using private wuSt chunks.
๐ŸŒญ Wurster Lab 0.16
$ meatgrinder build app/ dist/my-app.wurst
$ meatgrinder publisher create --domain example.com
$ meatgrinder build app/ dist/my-app.wurst --sign example.com.wurstkey