๐Ÿฅ“ ๐ŸŒญ

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.

Pre-1.0 development project. Wurster is under active development and is not currently published under an open-source license. The 1.0 release is intended to move to a permissive open-source license; MIT is the current candidate. Until a LICENSE file says otherwise, the source remains all rights reserved.
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