-
Notifications
You must be signed in to change notification settings - Fork 0
AMS Module Development
Matthew DaLuz edited this page Mar 18, 2026
·
1 revision
This page documents the current AMS module format accepted by ModuleManager.
Minimum module zip content:
module-info.json
overlay/
Optional subtrees and scripts:
overlay/system/
overlay/vendor/
overlay/product/
post-fs-data.sh
service.sh
overlay/ must exist, even if only one target subtree is used.
Recognized fields:
-
name(required) versionauthordescription-
mount(bool, defaulttrue) -
post_fs_data(bool, defaultfalse) -
service(bool, defaultfalse)
Name validation:
- allowed chars:
a-z,A-Z,0-9,-,_,.
module-info.json:
{
"name": "example-fonts",
"version": "1.0.0",
"author": "you",
"description": "Example AMS module",
"mount": true,
"post_fs_data": false,
"service": false
}Directory tree:
example-fonts/
module-info.json
overlay/
system/
fonts/
MyFont.ttf
From inside module root:
zip -r ../example-fonts.zip .Accepted zip layouts:
- flat root (
module-info.jsonat archive root) - single nested top-level folder containing module root
apm module-install /path/to/example-fonts.zipOther lifecycle commands:
apm module-list
apm module-enable example-fonts
apm module-disable example-fonts
apm module-remove example-fonts-
post-fs-data.shruns synchronously whenpost_fs_datais true. -
service.shruns in background whenserviceis true. - Script output is appended to
/data/ams/logs/<module>.log.
AMS writes state.json in module root with fields:
enabledinstalled_atupdated_atlast_error
- Keep top-level overlay entries additive and predictable.
- Validate module name early before packaging.
- Check
/data/ams/logs/<module>.logafter each install/enable cycle. - Reboot once after major overlay changes if target partitions were not yet mounted when module was enabled.