A .chattree-plugin file is a standard ZIP archive with a .chattree-plugin extension.
Chattree treats any file with this extension as a plugin package.
my-plugin.chattree-plugin (ZIP archive)
├── plugin.json ← REQUIRED — plugin manifest
├── plugin.wasm ← REQUIRED for runtime="wasm"
├── icon.png ← OPTIONAL — plugin icon (512x512 PNG)
├── README.md ← OPTIONAL — documentation / usage notes
└── LICENSE ← OPTIONAL — license text (.txt, .md, or bare)
..), leading slashes, and drive letters are always rejected. During local import in the app, if an archive was re-compressed with a single outer folder (my-plugin/plugin.json) or includes OS metadata entries (__MACOSX/, .DS_Store, Thumbs.db, desktop.ini) or duplicate copy suffixes (plugin (1).json, plugin (1).wasm), PluginPackageManager automatically flattens the single root directory, strips OS artifacts, and normalizes copy suffixes.plugin.json (mandatory)plugin.wasm (mandatory for WASM runtime)icon.png (optional icon, recommended 512×512 PNG)readme.md (optional)license, license.txt, license.md (optional)26,214,400 bytes).52,428,800 bytes) across all entries (zip-bomb defense).plugin.json must be present and parseable.plugin.wasm must match plugin.json → wasmPath (always "plugin.wasm").wasmSha256 field in plugin.json must match the actual SHA-256 of plugin.wasm. Chattree computes this on import and rejects any mismatch.icon.png is optional. If absent, Chattree uses a default icon. Recommended size: 512 × 512 pixels..chattree-plugin.chattree-plugin / .zip file is selected, including files with browser/OS copy suffixes like my-plugin (1).chattree-plugin or my-plugin - copia.chattree-plugin).PK\x03\x04 for ZIP archives or { for JSON manifests) and reads the package in memory.__MACOSX, .DS_Store, Thumbs.db).plugin.json → validates all fields and schema structure.plugin.wasm → verifies SHA-256 integrity against manifest.wasmSha256.rootKeyId = "chattree-official-v1".PluginStateStore that the version is not lower than the maximum version historically installed for that plugin ID. Any version downgrade is blocked immediately.v1.0.0 → v2.0.0) with an Actualizar plugin (or Reinstalar plugin) button—no manual uninstallation required.The official @chattree/cli automatically validates the manifest, computes the SHA-256 checksum of plugin.wasm, updates manifest.wasmSha256, and packages all required files at the root of the archive:
# Inside your plugin project directory
npx @chattree/cli package
# Or specifying a path
npx @chattree/cli package path/to/my-plugin/
This outputs <id>-v<version>.chattree-plugin ready for installation or marketplace publishing.
From the repository root:
node tools/package-plugin.mjs path/to/my-plugin/
Ensure that all files (plugin.json, plugin.wasm, and optionally icon.png) are located at the root of the ZIP archive:
# Linux / macOS
zip -9 my-plugin.chattree-plugin plugin.json plugin.wasm icon.png
# Windows PowerShell
Compress-Archive -Path plugin.json, plugin.wasm, icon.png -DestinationPath my-plugin.zip
Rename-Item my-plugin.zip my-plugin.chattree-plugin
Warning: Never zip the parent directory itself (e.g.
zip my-plugin.zip my-plugin/). The extractor requiresplugin.jsonto be at the root entry of the archive.
You can share a .chattree-plugin file through any channel:
Users can import it directly in Chattree's Settings → Plugins → Importar plugin, or by tapping the file in any file manager or download manager.
To verify your archive before distributing:
# List archive contents
unzip -l my-plugin.chattree-plugin
# Verify SHA-256 of wasm inside
unzip -p my-plugin.chattree-plugin plugin.wasm | sha256sum
Compare the SHA-256 with the wasmSha256 field in plugin.json.
Limits are aligned across the mobile importer, repository CLI, and web submission service:
| Resource | Limit |
|---|---|
| Compressed archive for in-app import | 25 MB maximum |
| Total uncompressed archive contents | 50 MB maximum in app import |
| Archive entries | 50 maximum in app import |
| Marketplace submission package | 25 MB maximum |
| WASM linear memory | 32 MB default (up to 64 MB / 1024 pages) |
icon.png | Optional; web validator warns above 1 MB (512×512 recommended) |
| Root files | plugin.json, plugin.wasm, icon.png, readme.md, license, license.txt, license.md |