Extend Bolt
The Boltpack format.
A .boltpack is one signed file that carries User Apps, their scripts, skills and agents from one person to another.
What is inside.
my-pack.boltpack gzip tar
bundle.json what is inside, who signed it, the content hash
signature.bin 64-byte Ed25519 signature over bundle.json
manifests/
utilities/*.yaml User Apps
scripts/* scripts those Apps call
skills/*.json skills
agents/*.json agents
A Boltpack is a gzip tar of up to 50 MB. ZIP is refused. The hash covers each file's path and bytes only, so file dates and order do not matter.
What gets installed, and where.
| Folder in the pack | Kind | Installed by | Ends up in |
|---|---|---|---|
utilities/*.yaml | user_utility | Desktop app, when you drop the pack on the launcher | Bolt's User Apps folder, as <id>.yaml |
scripts/* | script | Desktop app, same step | The scripts folder beside it, marked runnable |
skills/*.json | skill | Settings → Agents → Import | Your skills |
agents/*.json | agent | Settings → Agents → Import | Your personal agents |
| anything else | other | Nothing | Ignored |
bundle.json.
| Field | Meaning |
|---|---|
schema_version | Always 1. |
bundle_version | Your version of the pack, for example 1.2.0. |
signed_by, signed_at | The author as written by the signer, and when (RFC 3339). |
min_bolt_api_version, max_bolt_api_version | The Bolt versions it is meant for. |
content_sha256, manifest_count, entries | A hash of every file, and one entry per file with its own hash and kind. |
release_notes | What changed. |
bundle_kind | util_pack for a personal Boltpack. |
pack | pack_id, name, icon, description, author (name, email, kind). |
signer_pubkey | The public key that checks the signature, for a self-signed pack. |
risk | The packer's own risk summary. Bolt works it out again and uses its own. |
Signing and trust.
| Pack | What it means | What happens |
|---|---|---|
| Signed by Sparcle | The signature matches a key built into Bolt. | Installs after the review card. From the next release the card reads Signed by Sparcle. |
| Self-signed (from the next release the card reads Signed by its author) | The signature matches a key inside the pack. It proves nobody changed the files after signing; it does not prove who wrote them. | After the review card, Bolt asks again in its own window: Install an unverified Bolt pack? Cancel, or no answer, installs nothing. |
| Unsigned or changed | No signature, or the files do not match it. | Refused. |
Bolt checks the signature and the hash before it shows you anything, and checks them again in the desktop app before it writes a file, so a page cannot hand the installer a different verdict. Today the only key built into Bolt is Sparcle's; a company signing key is planned.
Permissions.
Each script entry can declare what it touches. The review card shows
these before you install, and they set the risk level: a script, a
network host or a write makes it medium; a whole-disk
path such as /, ~ or ** makes it
high.
| Declared | Meaning |
|---|---|
network | Hosts the entry calls, as host:port. |
fs_read, fs_write | Files and folders it reads or writes. |
exec | Programs it runs. |
env | Environment variables it reads. |
Versions and updates.
Give each release a new bundle_version. Installing a pack
whose App has the same id as one you have replaces that
file. Bolt does not yet compare versions or show what changed between
two versions, so read the review card each time.
Making one.
Settings → Skills and Settings → Agents export your own as a signed Boltpack, each with a fresh key. A command-line tool to pack and sign User Apps and scripts is not public yet; it will come with the gallery.