> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dify.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Manifest

The Manifest is a YAML-compliant file that defines the most basic information of a **plugin**, including but not limited to the plugin name, author, included tools, models, etc. For the overall architecture of the plugin, please refer to [Basic Concepts of Plugin Development](/en/develop-plugin/getting-started/getting-started-dify-plugin) and [Developer Cheatsheet](/en/develop-plugin/dev-guides-and-walkthroughs/cheatsheet).

If the format of this file is incorrect, the parsing and packaging process of the plugin will fail.

### Code Example

Below is a simple example of a Manifest file. The meaning and function of each data item will be explained later.

For reference code of other plugins, please refer to the [GitHub code repository](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>
  The version of the plugin.
</ParamField>

<ParamField path="type" type="string" required>
  Plugin type, currently only `plugin` is supported, `bundle` will be supported in the future.
</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, required by the Marketplace not to be later than the current time.
</ParamField>

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

<ParamField path="resource" type="object">
  Resources to apply for.

  <ParamField path="memory" type="int64">
    Maximum memory usage, mainly related to AWS Lambda resource application on SaaS, unit in bytes.
  </ParamField>

  <ParamField path="permission" type="object">
    Permission application.

    <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 memory size, unit in bytes.
      </ParamField>
    </ParamField>
  </ParamField>
</ParamField>

<ParamField path="plugins" type="object" required>
  A list of `yaml` files for the specific capabilities extended by the plugin. Absolute path within the plugin package. For example, if you need to extend a model, you need to define a file similar to `openai.yaml`, fill in the file path here, and the file at this path must actually exist, otherwise packaging will fail.

  <Warning>
    Extending both tools and models simultaneously is not allowed.
  </Warning>

  <Warning>
    Having no extensions is not allowed.
  </Warning>

  <Warning>
    Extending both models and Endpoints simultaneously is not allowed.
  </Warning>

  <Warning>
    Currently, only one provider is supported for each type of extension.
  </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, initial version `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, should be `main` under Python.
    </ParamField>
  </ParamField>
</ParamField>

<ParamField path="privacy" type="string">
  Specifies the relative path or URL of the plugin's privacy policy file, e.g., `"./privacy.md"` or `"https://your-web/privacy"`. If you plan to list the plugin on the Dify Marketplace, **this field is required** to provide clear user data usage and privacy statements. For detailed filling guidelines, please refer to [Plugin Privacy Data Protection Guidelines](/en/develop-plugin/publishing/standards/privacy-protection-guidelines).
</ParamField>

***

[Edit this page](https://github.com/langgenius/dify-docs/edit/main/en/develop-plugin/features-and-specs/plugin-types/plugin-info-by-manifest.mdx) | [Report an issue](https://github.com/langgenius/dify-docs/issues/new?template=docs.yml)
