# yaml-language-server: $schema=https://json-schema.org/draft/2020-12/schema $schema: https://json-schema.org/draft/2020-12/schema title: Citadel app.yml v1 description: The first draft of Citadel's app.yml format type: object properties: version: type: - string - number description: The version of the app.yml format you're using. metadata: type: object properties: name: description: Displayed name of the app type: string version: description: Displayed version for the app type: string category: description: The category you'd put the app in type: string tagline: description: A clever tagline type: string description: description: A longer description of the app type: string developer: description: The awesome people behind the app type: string website: description: Displayed version for the app type: string dependencies: description: The services the app depends on type: array items: type: string repo: description: The development repository for your app type: string support: description: A link to the app support wiki/chat/... type: string gallery: type: array description: >- URLs or paths in the runcitadel/app-images/[app-name] folder with app images items: type: string path: description: The path of the app's visible site the open button should open type: string defaultPassword: description: The app's default password type: string torOnly: description: Whether the app is only available over tor type: boolean mainContainer: type: string description: >- The name of the main container for the app. If set, IP, port, and hidden service will be assigned to it automatically. updateContainer: type: string description: The container the developer system should automatically update. required: - name - version - category - tagline - description - developer - website - repo - support - gallery additionalProperties: false containers: type: array items: type: object properties: name: type: string image: type: string permissions: type: array items: type: string enum: - lnd - bitcoind - electrum - root - hw ports: type: array items: type: - string - number port: type: number description: >- If this is the main container, the port inside the container which will be exposed to the outside as the port specified in metadata. environment: type: object data: type: array description: >- An array of at directories in the container the app stores its data in. Can be empty. Please only list top-level directories. items: type: string user: type: string description: The user the container should run as stop_grace_period: type: string description: The grace period for stopping the container. Defaults to 1 minute. depends_on: type: array description: The services the container depends on entrypoint: type: - string - array description: The entrypoint for the container bitcoin_mount_dir: type: string description: Where to mount the bitcoin dir command: type: - string - array description: The command for the container init: type: boolean description: Whether the container should be run with init stop_signal: type: string description: The signal to send to the container when stopping noNetwork: type: boolean description: >- Set this to true if the container shouldn't get an IP & port exposed. needsHiddenService: type: boolean description: >- Set this to true if the container should be assigned a hidden service even if it's not the main container. hiddenServicePort: type: number description: >- Set this to a port if your container exposes multiple ports, but only one should be a hidden service. hiddenServicePorts: type: object description: >- Set this to a map of service names to hidden service ports if your container exposes multiple ports, and all of them should be hidden services. patternProperties: ^[a-zA-Z0-9_]+$: type: - number - array restart: type: string description: When the container should restart. Can be 'always' or 'on-failure'. additionalProperties: false required: - name - image additionalProperties: false required: - metadata - containers additionalProperties: false