LPK Format
This document describes the current LPK v1 / v2 file layout, field boundaries, and compatibility rules.
1. Top-level layout
Typical LPK root:
text
.
├── manifest.yml
├── package.yml
├── content.tar | content.tar.gz
├── images/
├── images.lock
└── META/Notes:
manifest.yml- Runtime structure definition.
package.yml- Static package metadata.
content.tar/content.tar.gz- Optional content archive.
images/andimages.lock- Embedded image data for LPK v2.
META/- Archive metadata.
2. manifest.yml
manifest.yml only describes runtime structure, such as:
usageapplicationservicesext_config
Rules:
- The source manifest may go through
#@buildpreprocessing at build time. - The file packaged into the final LPK must be the preprocessed
manifest.yml. - Deploy-time render only resolves deploy-time inputs such as
.U/.S. - For LPK v2, these static fields should no longer live in
manifest.yml:packageversionnamedescriptionlocalesauthorlicensehomepagemin_os_versionunsupported_platforms
3. package.yml
package.yml stores static package metadata.
Current fields:
yml
package: cloud.lazycat.app.demo
version: 0.0.1
name: Demo
description: Demo app
locales:
en:
name: Demo
description: Demo app
author: demo
license: MIT
homepage: https://example.com
min_os_version: 1.0.0
unsupported_platforms:
- iosRules:
- LPK v2 (tar format) must include
package.yml. - LPK v1 (zip format) keeps backward compatibility and may still keep these static fields in
manifest.yml. - New projects should move static metadata into
package.yml. localeskeeps the same meaning; only its storage location moves frommanifest.ymltopackage.yml.
4. content.tar / content.tar.gz
Rules:
- Content archives are generated only when
contentdiris configured, or when build hooks actually write content. - Image-only release packages may omit
content.tar*completely. - Tar-based LPK v2 may use
content.tar.gzwhen embedded images are present.
5. images/ and images.lock
These files are used by LPK v2 embedded image distribution.
Rules:
images/stores an OCI layout.images.lockrecords alias, final digest, and upstream information.embed:<alias>@sha256:<digest>references inmanifest.ymlmust matchimages.lock.
6. Compatibility
- zip / v1 keeps backward compatibility and may still place static fields in
manifest.yml. - tar / v2 requires
package.ymland follows the current v2 image rules. - After
lzc-os/pkgminstalls either V1 or V2, the runtime directory/lzcsys/data/system/pkgm/run/<deploy_id>/pkg/is normalized to the V2 layout:manifest.ymlkeeps runtime structure onlypackage.ymlstores static metadata