Skip to main content

manifest.yaml Reference

The manifest.yaml file defines how your extension appears in the Sulla Desktop marketplace catalog. It contains the metadata, description, labels, and branding that users see when browsing extensions.

Full Schema

- slug: docker.io/your-org/your-extension
version: 1.0.0
containerd_compatible: true
labels:
com.docker.desktop.extension.api.version: 0.0.1
com.docker.extension.icon: https://example.com/icon.svg
com.docker.extension.additional-urls: ''
com.docker.extension.categories: productivity,utility-tools
com.docker.extension.changelog: >
<h3>Recent Updates</h3>
<h4>1.0.0</h4>
<ul><li>Initial release</li></ul>
com.docker.extension.detailed-description: >
Full HTML description of your extension.
<br><br>
<strong>Features:</strong>
<ul>
<li>Feature 1</li>
<li>Feature 2</li>
</ul>
com.docker.extension.publisher-url: https://github.com/your-org/your-extension
com.docker.extension.screenshots: ''
org.opencontainers.image.authors: Your Name
org.opencontainers.image.created: 2026-01-01T00:00:00Z
org.opencontainers.image.description: Short one-line description
org.opencontainers.image.licenses: MIT
org.opencontainers.image.source: https://github.com/your-org/your-extension
org.opencontainers.image.title: My Extension by Your Org
org.opencontainers.image.url: https://hub.docker.com/r/your-org/your-extension
org.opencontainers.image.vendor: Your Org
org.opencontainers.image.version: 1.0.0
title: My Extension by Your Org
logo: https://example.com/logo.png
publisher: Your Org
short_description: One-line summary shown in the catalog card
installable: https://raw.githubusercontent.com/sulla-ai/sulla-recipes/refs/heads/main/recipes/your-extension/installation.yaml

Field Reference

Top-Level Fields

FieldTypeRequiredDescription
slugstringYesUnique identifier in Docker Hub format: docker.io/<org>/<name>. This is the extension ID used throughout the system.
versionstringYesCurrent version. Must match your installation.yaml version.
containerd_compatiblebooleanYesSet to true. Required for compatibility.
titlestringYesFull display title (e.g. "Stirling-PDF by Sulla Labs").
logostringYesURL to your extension's logo/icon. Shown in the catalog cards.
publisherstringYesYour organization or author name.
short_descriptionstringYesOne-line description shown on the catalog card. Keep it under 120 characters.
installablestringYesRaw GitHub URL to your installation.yaml. This is what makes it a recipe-based extension.
labelsobjectYesMetadata labels (see below).

The installable Field

This is the critical field that tells Sulla Desktop your extension is recipe-based (not a legacy Docker image extension). It must be the raw GitHub URL to your installation.yaml:

installable: https://raw.githubusercontent.com/sulla-ai/sulla-recipes/refs/heads/main/recipes/your-extension/installation.yaml

Without this field, Sulla will try to install your extension as a legacy Docker image — which is not what you want.

Labels

Labels follow the OCI (Open Container Initiative) and Docker Desktop Extension conventions. They provide metadata for the catalog UI.

Required Labels

LabelDescription
com.docker.desktop.extension.api.versionAlways 0.0.1.
com.docker.extension.iconURL to your extension icon.
com.docker.extension.categoriesComma-separated categories (e.g. productivity,documents,utilities).
com.docker.extension.detailed-descriptionFull HTML description. Supports basic HTML tags.
org.opencontainers.image.titleDisplay title for the extension.
org.opencontainers.image.descriptionShort plain-text description.
org.opencontainers.image.vendorYour organization name.
org.opencontainers.image.versionMust match the top-level version.
org.opencontainers.image.authorsAuthor name(s).

Optional Labels

LabelDescription
com.docker.extension.additional-urlsAdditional URLs (legacy format, prefer extraUrls in installation.yaml).
com.docker.extension.changelogHTML changelog for the extension.
com.docker.extension.publisher-urlURL to your project or organization page.
com.docker.extension.screenshotsComma-separated screenshot URLs (not yet implemented in UI).
org.opencontainers.image.createdISO 8601 creation timestamp.
org.opencontainers.image.licensesSPDX license identifier (e.g. MIT, Apache-2.0).
org.opencontainers.image.sourceURL to your source repository.
org.opencontainers.image.urlURL to your Docker Hub page or homepage.

Categories

Use one or more of these standard categories (comma-separated in the label):

CategoryUse For
productivityOffice tools, PDF editors, note-taking
emailMail servers, webmail clients
mediaMedia servers, streaming, photo management
communicationChat, VoIP, video conferencing
businessCRM, accounting, ERP
developmentDev tools, CI/CD, code editors
securityVPN, firewalls, password managers
utility-toolsSystem utilities, monitoring, backups
documentsDocument management, wikis
serverServer infrastructure, DNS, web servers

Writing the Detailed Description

The com.docker.extension.detailed-description label supports basic HTML and is displayed on the extension detail page. Best practices:

  • Start with a strong one-liner about what your extension does
  • Use <strong> for emphasis, <ul>/<li> for feature lists
  • Include a Features section
  • Include a Requirements section with minimum specs
  • Keep it scannable — users won't read walls of text
com.docker.extension.detailed-description: >
<strong>My Extension</strong> does X, Y, and Z locally on your machine.
<br><br>
<strong>Features:</strong>
<ul>
<li>Feature one</li>
<li>Feature two</li>
<li>Feature three</li>
</ul>
<br>
<strong>Requirements:</strong>
<ul>
<li>Sulla Desktop v1.0.0+</li>
<li>1GB+ RAM</li>
</ul>

Relationship to index.yaml

Your manifest.yaml entry must also be added to the root index.yaml file in the sulla-recipes repository. The index.yaml is the master catalog that Sulla Desktop fetches to populate the marketplace.

The format is identical — your manifest.yaml entry is simply copied into the plugins array in index.yaml. See Submitting Your Extension for details.