Skip to content

Applies to Cowork 0.1.46 · For everyone who uses Cowork

Package Spec Not yet released ​

The rules a Mini App package must meet for Micromeet to sign it and Cowork to open it: what each rule is, who checks it, and what happens when it is not met. How to make the package is in Build and Sign; micromeet-miniapp verify runs these checks on your computer first. This page is about the signed Mini App package, not the Cowork packages of the Package module.

Checked byWhen
Toolmicromeet-miniapp (pack, verify, zip) and the Vite plugin, on your computer
MicromeetWhen Micromeet registers and signs a version
InstallWhen Cowork installs the package
OpenEvery time Cowork opens the Mini App, and every time the page reads a file

Files ​

text
ai.example.app-1.0.0.zip
  manifest.json
  app.asar
  app.asar.unpacked/    optional: large media
  INSTALL.md            optional: steps for the agent that installs it
RuleChecked byIf not met
The four entries sit at the root of the zip (or folder); Cowork keeps only theseInstallAnything else is not installed
Zip: at most 100,000 entries and 8 GB unpacked; no encryption, absolute path, .., backslash or symbolic linkTool, InstallNot installed
No file or folder named .DS_Store, __MACOSX, .git or node_modulesToolpack leaves them out; verify refuses one in app.asar.unpacked/

manifest.json ​

FieldRuleChecked byIf not met
appIdThe AppID Micromeet registered: lower-case reverse domain such as ai.example.app, at most 128 charactersTool, Micromeet, InstallRefused
nameA string, or { zh, en } with at least one of them; 1–60 characters. Not signed: the sign-in card shows the name Micromeet registeredTool, InstallRefused
versionStarts with a letter or digit; letters, digits, ., +, -; at most 32Tool, MicromeetRefused
version_codeA string of 12 digits, the build time YYMMDDHHmmssTool, InstallRefused
entryA file packed inside app.asar, not unpacked; relative path, at most 256 characters, no .., backslash or control character. Default index.htmlTool, Micromeet, InstallRefused
asarThe archive's file name: letters, digits, ., _, -, ending in .asar. Default app.asarTool, InstallRefused
domainsOptional; only for a Mini App that signs people in with Micromeet (Server domains). https://host[:port] written lower-case, no path or IP address; or http(s)://localhost[:port] / 127.0.0.1[:port]. No duplicate, at most 20Tool, Micromeet, InstallRefused. Micromeet registers a version only when each of its domains is verified for the AppID
asarHeaderSha256SHA-256 of app.asar's first 8 + header-size bytes; written by the toolsTool, Micromeet, OpenNot signed: Cowork does not open it
signature{ kid, alg: "Ed25519", value }, written from Micromeet's answerTool, OpenNot signed: Cowork does not open it
extensionNot allowed in a signed packageTool, InstallRefused

app.asar ​

RuleChecked byIf not met
Made by @electron/asar 3.x; the header exactly as it writes it, at most 64 MBTool, Micromeet, InstallRefused
Every file, packed or unpacked, has integrity: SHA-256 in 4 MB blocksTool, Micromeet, OpenRefused; Cowork treats it as not signed
No symbolic link, inside app.asar or in app.asar.unpacked/Tool, Micromeet, InstallRefused
File and folder names are not empty, . or .., and hold no /, backslash or NULTool, MicromeetRefused
app.asar at most 512 MB; put video and audio in app.asar.unpacked/Tool, MicromeetRefused
app.asar.unpacked/ at most 100,000 files and 8 GB; each file is the size its header recordsTool, InstallRefused
Every file's bytes match its digestTool, Micromeet, OpenMicromeet refuses to sign; Cowork closes the Mini App and says its files were changed
No inline <script> in HTML: pages are served with the content policy script-src 'self'Tool (pack)Refused by pack; in the browser the script would not run

Cowork serves the files from miniapp://<appId>/, so absolute paths such as /assets/app.js work. Requests to other services are not limited.

Signature ​

Micromeet signs these bytes with Ed25519. domains are sorted and joined by one space; the last line is empty without them. name and icons are not signed.

text
miniapp-sig-v2
<appId>
<version>
<entry>
<asarHeaderSha256>
<domains>

Versions registered before 2026-11-10 carry miniapp-sig-v1 (the first five lines, no domains) and stay valid for a manifest without domains.

CoworkTreats as signed
Released Coworkcowork-prod-1: versions signed by Micromeet production
Cowork Previewcowork-preview-1
A development run (not packaged)Its own key, cowork-preview-1 and cowork-test-1

Versions and delivery ​

RuleChecked byIf not met
A version is registered once: change version for every build you hand overMicromeetRefused
Changing any file, entry or domains needs a new version and signatureOpenNot signed: Cowork does not open it
Installed on its own from the zip or folder (miniapp_install): each version_code in its own folder, the older one removed when its tabs closeInstall—
Or inside a Cowork package, copied or linked; a copied package holds at most 2,000 files and 50 MB, app.asar includedInstallThe package is refused

When Cowork opens it ​

  • Not signed, signed with a key this Cowork does not trust, or unreadable: Cowork does not open it and tells the person the Mini App is not certified.
  • A file that differs from its digest when the page reads it: Cowork closes the Mini App and says its files were changed.
  • Each Cowork account keeps its own storage for the Mini App; one person never sees another's.
  • The page stays on miniapp://<appId>/; http(s) links open in the system browser.
  • Signing a person in also needs the AppID and version active on Micromeet and at least one verified server domain in domains (see Sign-in).

For Micromeet Cowork 0.1.41 · build 261111110020