GemmaPoddocs
Referencegemmapod CLI

gemmapod build

Sign a pod.toml + owner key into a single self-mounting .html.

Synopsis

gemmapod build <pod.toml> --key <owner.key> --out <agent.html>

Description

Reads a pod manifest, signs it with the supplied owner key, and writes a single self-contained HTML file with:

  • The signed CBOR manifest base64-inlined as __GEMMAPOD_MANIFEST_B64
  • The WASM core base64-inlined as __GEMMAPOD_WASM_B64
  • The shim IIFE inlined as a <script>
  • A boot snippet that calls GemmaPod.boot(document.getElementById("pod"))

The CLI round-trip-verifies the signature before writing the artefact. A build that exits 0 has a valid signature by construction.

Options

FlagDefaultMeaning
<pod.toml>(required)Manifest source file.
--key <path>(required)Owner keypair JSON (from gemmapod keygen).
--out <path>(required)Destination .html. Parent directory is created.

Example

gemmapod build pod.toml --key owner.key --out dist/agent.html
# wrote dist/agent.html (964.2 KB)
#   pod id:  hello-pod
#   signer:  3b3bca711bee628f…
#   transport preferred: dartc → fallback

The output is ~960 KB:

  • ~342 KB inlined shim IIFE
  • ~305 KB base64-inlined WASM (228 KB raw)
  • ~3 KB CBOR signed manifest
  • HTML chrome + the boot snippet

What the signed manifest commits to

Everything in pod.toml plus the owner_pubkey field auto-derived from --key:

  • name, persona, system_prompt, model
  • The full [transport] block
  • Every [[tools]] entry (name + description)

Tampering with any inlined byte of the manifest breaks the signature. The browser refuses to mount tampered pods.

See also