Skip to content

lzc-manifest.yml Specification Document

1. Overview

lzc-manifest.yml is a file used to define application deployment-related configurations. This document will describe its structure and the meaning of each field in detail.

2. Top-level Data Structure ManifestConfig

2.1 Basic Information

Field NameTypeDescription
packagestringApplication's unique ID, must be globally unique, recommended to start with personal domain
versionstringApplication version number, X, Y and Z are non-negative integers, X is the major version number, Y is the minor version number, and Z is the revision number, format: X.Y.Z, Read detailed specification
namestringApplication name
descriptionstringApplication description
usagestringApplication usage instructions, if not empty, will be automatically rendered when each user in LCMD first accesses this application
licensestringApplication license description
homepagestringApplication homepage
authorstringAuthor name, if through store channel then store account has higher priority
min_os_versionstringMinimum system version required by this application, if not met the application installation will fail, and the app store will refuse to install this application

2.2 Other Configurations

Field NameTypeDescription
ext_configExtConfigExperimental properties, not publicly available yet
unsupported_platforms[]stringPlatforms not supported by the application, valid fields are: "ios", "android", "windows", "macos", "linux", "tvos"
applicationApplicationConfiglzcapp core service configuration
servicesmap[string]ServiceConfigTraditional docker container related service configuration
localesmap[string]I10nConfigItemApplication localization configuration (optional configuration item), requires lzc-os version >= v1.3.0

3. IngressConfig Configuration

3.1 Network Configuration

Field NameTypeDescription
protocolstringProtocol type, supports tcp or udp
portintTarget port number, if empty, uses the actual inbound port
servicestringService container name, if empty, defaults to the special service app
descriptionstringService description, for system components to render application services for administrators to review
publish_portstringAllowed inbound port number, can be a specific port number or port range like 1000~50000
send_port_infoboolSend the actual inbound port as uint16 type in little endian to the target port before data forwarding
yes_i_want_80_443boolIf true, allows forwarding 80,443 traffic to the application, at this time the traffic completely bypasses the system, so authentication, wake-up, etc. will not take effect

4. ApplicationConfig Configuration

4.1 Basic Configuration

Field NameTypeDescription
imagestringApplication image, if no special requirements, leave empty to use system default image (alpine3.21)
background_taskboolIf true, will automatically start and not be automatically hibernated, defaults to true
subdomainstringInbound subdomain for this application, application opens using this subdomain by default
multi_instanceboolWhether to deploy in multi-instance form
usb_accelboolMount related devices to /dev/bus/usb in all service containers
gpu_accelboolMount related devices to /dev/dri in all service containers
kvm_accelboolMount related devices to /dev/kvm and /dev/vhost-net in all service containers
depends_on[]stringDependencies on other container services, only supports other services within this application, and enforces detection type as healthly, optional

4.2 Functional Configuration

Field NameTypeDescription
file_handlerFileHandlerConfigDeclare file extensions supported by this application, so other applications can call this application when opening specific files
entries[]EntryConfigApplication entry declaration, used to configure multiple entries' names and address information, see 4.3
routes[]stringSimplified HTTP related routing rules
upstreams[]UpstreamConfigAdvanced version HTTP related routing rules, coexisting with routes
public_path[]stringList of HTTP paths with independent authentication
injects[]InjectConfigScript injection configuration for specific paths (lzcinit)
workdirstringWorking directory when app container starts
ingress[]IngressConfigTCP/UDP service related
environmentmap[string]string | []stringEnvironment variables for app container, supports map or list format
health_checkAppHealthCheckExtHealth check for app container, only recommended to set disable field during development and debugging, not recommended to replace, otherwise the system's default injected automatic dependency detection logic will be lost
oidc_redirect_pathstringValid OIDC redirect path, full domain will be automatically composed based on subdomain

Note: routes trims the path prefix by default when forwarding. If you need to keep the prefix, use upstreams and set disable_trim_location: true (lzcos v1.3.9+).

4.3 Multiple Entry Configuration

entries is used to declare multiple entries, the system can display multiple entries in the launcher.

Field NameTypeDescription
idstringUnique ID of the entry
titlestringEntry title
pathstringEntry path, usually starts with /. Supports passing query parameters
prefix_domainstringEntry domain prefix, final domain is <prefix>-<subdomain>.<rootdomain>

Entry title supports localization via locales with entries.<entry_id>.title.

4.4 Script Injection Configuration

InjectConfig

Field NameTypeDescription
idstringUnique ID of this inject config
onstringPhase: browser/request/response, default browser
prefix_domainstringDomain prefix filter, matches only <prefix>-<subdomain>...
auth_requiredboolRequire valid SAFE_UID, default true
when[]stringMatch rules (OR), at least one
unless[]stringExclude rules (OR), optional
dostring | []InjectScriptConfigScript definition, supports short syntax and long syntax

InjectScriptConfig

Field NameTypeDescription
srcstringScript source: builtin://..., file:///..., or inline script
paramsmap[string]anyParameters passed to script

For runtime behavior, phase model, and best practices, see: Script Injection (injects).

5. HealthCheckConfig Configuration

5.1 AppHealthCheckExt

Field NameTypeDescription
test_urlstringOnly effective under application field. Extended detection method, directly provides an HTTP URL without relying on curl/wget and other command lines inside the container
disableboolDisable health check for this container
start_periodstringStartup wait period time, if not entering healthly state after exceeding this time range, will become unhealthy
timeoutstringIf a single detection takes longer than timeout, the detection is considered failed

5.2 HealthCheckConfig

Field NameTypeDescription
test[]stringWhat command to execute in the corresponding container for detection, such as: ["CMD", "curl", "-f", "http://localhost"]
timeoutstringIf a single detection takes longer than timeout, this detection is considered failed
intervalstringInterval between each detection
retriesintAfter how many consecutive detection failures, the entire container enters unhealthy state. Default value 1
start_periodstringStartup wait period time, if not entering healthly state after exceeding this time range, will become unhealthy
start_intervalstringDuring the start_period time, how often to execute detection
disableboolDisable health check for this container

6. ExtConfig Configuration

Field NameTypeDescription
enable_document_accessboolIf true, mounts document directory to /lzcapp/document
enable_media_accessboolIf true, mounts media directory to /lzcapp/media
enable_clientfs_accessboolIf true, mounts clientfs directory to /lzcapp/clientfs
disable_grpc_web_on_rootboolIf true, no longer hijacks application's grpc-web traffic. Needs to work with new version lzc-sdk so system's own grpc-web traffic can be forwarded normally
default_prefix_domainstringWill adjust the final domain opened after clicking the application in the launcher, can write any string without .
enable_bind_mime_globsboolIf true, bind system mime globs into /usr/share/mime/globs2 inside the container

7. ServiceConfig Configuration

7.1 Container Configuration

Field NameTypeDescription
imagestringDocker image for the corresponding container
environmentmap[string]string | []stringEnvironment variables for the corresponding container, supports map or list format
entrypoint*stringEntrypoint for the corresponding container, optional
command*stringCommand for the corresponding container, optional
tmpfs[]stringMount tmpfs volume, optional
depends_on[]stringDependencies on other container services (except the name app), only supports other services within this application, and enforces detection type as healthly, optional
healthcheck*HealthCheckConfigHealth check strategy for the container, old version health_check has been deprecated
user*stringUID or username for container operation, optional
cpu_sharesint64CPU shares
cpusfloat32Number of CPU cores
mem_limitstring|intContainer's memory limit
shm_sizestring|int/dev/shm/ size
network_modestringNetwork mode, currently only supports host or leave empty. If host, the container's network will be the host network space. In this mode, applications must pay attention to authentication when performing network listening, avoid listening on 0.0.0.0 unless necessary
netadminboolIf true, the container has NET_ADMIN permissions and can operate network-related system calls, please do not use unless necessary. If using this feature, please be careful not to disturb iptables related rules
setup_script*stringConfiguration script, script content will be executed with root permissions, then execute original entrypoint content according to OCI specification. This field conflicts with entrypoint and command fields, cannot be set simultaneously, optional
binds[]stringlzcapp container rootfs will be lost after restart, only data under /lzcapp/var, /lzcapp/cache paths will be permanently retained. Therefore, other directories that need to be retained need to be bound under these two directories. This list only supports paths starting with /lzcapp
runtimestringSpecify OCI runtime. Supports runc and sysbox-runc. sysbox-runc has higher isolation and can run complete dockerd, systemd, etc. But does not support namespace sharing related features like network_mode=host

8. FileHandlerConfig Configuration

8.1 File Processing Configuration

Field NameTypeDescription
mime[]stringList of supported MIME types
actionsmap[string]stringAction mapping

9. HandlersConfig Configuration

9.1 Handler Configuration

Field NameTypeDescription
acl_handlerstringACL handler
error_page_templatesmap[string]stringError page templates, optional

10. UpstreamConfig Configuration

Field NameTypeDescription
locationstringPath matched by entry
disable_trim_locationboolWhen forwarding to backend, do not automatically remove the location prefix (lzcos v1.3.9+)
domain_prefixstringDomain prefix matched by entry
backendstringUpstream address, needs to be a valid url, supports three protocols: http, https, file
use_backend_hostboolIf true, when accessing upstream, the http host header uses the host in backend, not the host when the browser requests
backend_launch_commandstringAutomatically start the program in this field
trim_url_suffixstringAutomatically delete specified characters that the url may carry when requesting backend
disable_backend_ssl_verifyboolDo not perform ssl security verification when requesting backend
disable_auto_health_checkingboolDisable system automatic health checking generated for this entry
disable_url_raw_pathboolIf true, removes raw URL from HTTP header
remove_this_request_headers[]stringRemove HTTP request headers in this list, such as "Origin", "Referer"
fix_websocket_headerboolAutomatically replace Sec-Websocket-xxx with Sec-WebSocket-xxx
dump_http_headers_when_5xxboolIf HTTP upstream appears 5xx, dump the request
dump_http_headers_when_paths[]stringIf HTTP matches this path, dump the request

11. Localization I10nConfigItem Application Configuration

Configure locales to make applications support multiple languages. For supported language key specifications, refer to BCP 47 standard

Field NameTypeDescription
namestringApplication name localization field
descriptionstringApplication description localization field
usagestringApplication usage instructions localization field
entries.<entry_id>.titlestringEntry title localization field, entry_id must match the id in application.entries

Note: Entry title can be localized via locales with entries.<entry_id>.title.

Configuration Example
yml
lzc-sdk-version: 0.1
package: cloud.lazycat.app.netatalk
version: 0.0.1
name: Apple 时间机器备份
description: Netatalk 服务可用于 Apple 时间机器备份
author: Netatalk
locales:
  zh:
    name: "Apple 时间机器备份"
    description: "Netatalk 服务可用于 Apple 时间机器备份"
  zh_CN:
    name: "Apple 时间机器备份"
    description: "Netatalk 服务可用于 Apple 时间机器备份"
  en:
    name: "Time Machine Server"
    description: "Netatalk service can be used for Apple Time Machine backup"
  ja:
    name: "タイムマシンサーバー"
    description: "Netatalk サービスは Apple Time Machine のバックアップに使用できます"
application:
  subdomain: netatalk3
lzc-sdk-version: 0.1
package: cloud.lazycat.app.netatalk
version: 0.0.1
name: Apple 时间机器备份
description: Netatalk 服务可用于 Apple 时间机器备份
author: Netatalk
locales:
  zh:
    name: "Apple 时间机器备份"
    description: "Netatalk 服务可用于 Apple 时间机器备份"
  zh_CN:
    name: "Apple 时间机器备份"
    description: "Netatalk 服务可用于 Apple 时间机器备份"
  en:
    name: "Time Machine Server"
    description: "Netatalk service can be used for Apple Time Machine backup"
  ja:
    name: "タイムマシンサーバー"
    description: "Netatalk サービスは Apple Time Machine のバックアップに使用できます"
application:
  subdomain: netatalk3