> ## Documentation Index
> Fetch the complete documentation index at: https://dify-6c0370d8-docs-new-agent-experience.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Manifest

> YAML schema for the plugin manifest that declares name, author, runtime, resources, permissions, and which tools/models/endpoints the plugin ships

The manifest is a YAML file that defines a plugin's basic information: name, author, included tools and models, and more. If the file is malformed, plugin parsing and packaging fails.

For the overall plugin architecture, see [Basic Concepts of Plugin Development](/en/develop-plugin/getting-started/getting-started-dify-plugin) and the [Developer Cheatsheet](/en/develop-plugin/dev-guides-and-walkthroughs/cheatsheet).

## Code Example

Below is a simple manifest file; each field is explained in the Structure section that follows. For a real-world example, see the [Google tool plugin manifest](https://github.com/langgenius/dify-official-plugins/blob/main/tools/google/manifest.yaml).

```yaml theme={null}
version: 0.0.1
type: "plugin"
author: "Yeuoly"
name: "neko"
label:
  en_US: "Neko"
created_at: "2024-07-12T08:03:44.658609186Z"
icon: "icon.svg"
resource:
  memory: 1048576
  permission:
    tool:
      enabled: true
    model:
      enabled: true
      llm: true
    endpoint:
      enabled: true
    app:
      enabled: true
    storage:
      enabled: true
      size: 1048576
plugins:
  endpoints:
    - "provider/neko.yaml"
meta:
  version: 0.0.1
  arch:
    - "amd64"
    - "arm64"
  runner:
    language: "python"
    version: "3.12"
    entrypoint: "main"
privacy: "./privacy.md"
```

## Structure

<ParamField path="version" type="version" required>
  Plugin version.
</ParamField>

<ParamField path="type" type="string" required>
  Plugin type. Currently only `plugin` is supported; `bundle` support is planned.
</ParamField>

<ParamField path="author" type="string" required>
  Author, defined as the organization name in the Marketplace.
</ParamField>

<ParamField path="label" type="object" required>
  Multilingual name.
</ParamField>

<ParamField path="created_at" type="RFC3339" required>
  Creation time. The Marketplace requires this to be no later than the current time.
</ParamField>

<ParamField path="icon" type="string" required>
  Icon path.
</ParamField>

<ParamField path="resource" type="object">
  Resources the plugin requests.

  <ParamField path="memory" type="int64">
    Maximum memory usage in bytes. Mainly relates to AWS Lambda resource allocation on Dify Cloud.
  </ParamField>

  <ParamField path="permission" type="object">
    Permissions the plugin requests.

    <ParamField path="tool" type="object">
      Permission for reverse invocation of tools.

      <ParamField path="enabled" type="boolean">
        Whether to enable tool permissions.
      </ParamField>
    </ParamField>

    <ParamField path="model" type="object">
      Permission for reverse invocation of models.

      <ParamField path="enabled" type="boolean">
        Whether to enable model permissions.
      </ParamField>

      <ParamField path="llm" type="boolean">
        Whether to enable large language model permissions.
      </ParamField>

      <ParamField path="text_embedding" type="boolean">
        Whether to enable text embedding model permissions.
      </ParamField>

      <ParamField path="rerank" type="boolean">
        Whether to enable rerank model permissions.
      </ParamField>

      <ParamField path="tts" type="boolean">
        Whether to enable text-to-speech model permissions.
      </ParamField>

      <ParamField path="speech2text" type="boolean">
        Whether to enable speech-to-text model permissions.
      </ParamField>

      <ParamField path="moderation" type="boolean">
        Whether to enable content moderation model permissions.
      </ParamField>
    </ParamField>

    <ParamField path="node" type="object">
      Permission for reverse invocation of nodes.

      <ParamField path="enabled" type="boolean">
        Whether to enable node permissions.
      </ParamField>
    </ParamField>

    <ParamField path="endpoint" type="object">
      Permission to register `endpoint`.

      <ParamField path="enabled" type="boolean">
        Whether to enable endpoint permissions.
      </ParamField>
    </ParamField>

    <ParamField path="app" type="object">
      Permission for reverse invocation of `app`.

      <ParamField path="enabled" type="boolean">
        Whether to enable app permissions.
      </ParamField>
    </ParamField>

    <ParamField path="storage" type="object">
      Permission to apply for persistent storage.

      <ParamField path="enabled" type="boolean">
        Whether to enable storage permissions.
      </ParamField>

      <ParamField path="size" type="int64">
        Maximum allowed persistent storage size, in bytes.
      </ParamField>
    </ParamField>
  </ParamField>
</ParamField>

<ParamField path="plugins" type="object" required>
  Lists the YAML files for the capabilities the plugin extends, as absolute paths within the plugin package. For example, to extend a model, define a file such as `openai.yaml` and list its path here. The file must exist at that path, or packaging fails.

  <Warning>
    The following combinations are not allowed:

    * Extending both tools and models.
    * Extending both models and Endpoints.
    * Having no extensions at all.

    Currently, each extension type supports only one provider.
  </Warning>

  <ParamField path="tools" type="array[string]">
    Plugin extension for [Tool](/en/develop-plugin/dev-guides-and-walkthroughs/tool-plugin) providers.
  </ParamField>

  <ParamField path="models" type="array[string]">
    Plugin extension for [Model](/en/develop-plugin/features-and-specs/plugin-types/model-designing-rules) providers.
  </ParamField>

  <ParamField path="endpoints" type="array[string]">
    Plugin extension for [Endpoints](/en/develop-plugin/dev-guides-and-walkthroughs/develop-a-slack-bot-plugin) providers.
  </ParamField>

  <ParamField path="agent_strategies" type="array[string]">
    Plugin extension for [Agent Strategy](/en/develop-plugin/features-and-specs/advanced-development/reverse-invocation) providers.
  </ParamField>
</ParamField>

<ParamField path="meta" type="object" required>
  Metadata for the plugin.

  <ParamField path="version" type="version" required>
    Manifest format version. The initial version is `0.0.1`.
  </ParamField>

  <ParamField path="arch" type="array[string]" required>
    Supported architectures. Currently only `amd64` and `arm64` are supported.
  </ParamField>

  <ParamField path="runner" type="object" required>
    Runtime configuration.

    <ParamField path="language" type="string" required>
      Programming language. Currently only Python is supported.
    </ParamField>

    <ParamField path="version" type="string" required>
      Language version. Currently only `3.12` is supported.
    </ParamField>

    <ParamField path="entrypoint" type="string" required>
      Program entry point. For Python, this should be `main`.
    </ParamField>
  </ParamField>
</ParamField>

<ParamField path="privacy" type="string">
  Relative path or URL of the plugin's privacy policy, for example `"./privacy.md"` or `"https://your-web/privacy"`. **Required for listing on the Dify Marketplace**, where plugins must clearly state how they use user data. For details, see the [Plugin Privacy Data Protection Guidelines](/en/develop-plugin/publishing/standards/privacy-protection-guidelines).
</ParamField>
