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.
your web app
MeatGrinder
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.
$ meatgrinder build app/ dist/my-app.wurst
$ meatgrinder publisher create --domain example.com
$ meatgrinder build app/ dist/my-app.wurst --sign example.com.wurstkey