Skip to main content

Overview

Most plugin tools and endpoints operate in a stateless, single-round interaction model:
  1. Receive a request
  2. Process data
  3. Return a response
  4. End the interaction
However, many real-world applications require maintaining state across multiple interactions. This is where persistent storage becomes essential.
The persistent storage mechanism allows plugins to store data persistently within the same workspace, enabling stateful applications and memory features.
Dify currently provides a key-value (KV) storage system for plugins, with plans to introduce more flexible and powerful storage interfaces in the future based on developer needs.

Access Storage

All storage operations are performed through the storage object available in your plugin’s session:

Storage Operations

Store Data

Store data with the set method:
The value must be in bytes format. This provides flexibility to store various types of data, including files.

Example: Storing Different Data Types

Retrieve Data

Retrieve stored data with the get method:

Example: Retrieving and Converting Data

Delete Data

Delete stored data with the delete method:

Best Practices

Use Descriptive Keys

Create a consistent naming scheme for your keys to avoid conflicts and make your code more maintainable.

Handle Missing Keys

Always check if data exists before processing it, as the key might not be found.

Serialize Complex Data

Convert complex objects to JSON or other serialized formats before storing.

Implement Error Handling

Wrap storage operations in try/except blocks to handle potential errors gracefully.

Common Use Cases

  • User Preferences: Store user settings and preferences between sessions
  • Conversation History: Maintain context from previous conversations
  • API Tokens: Store authentication tokens securely
  • Cached Data: Store frequently accessed data to reduce API calls
  • File Storage: Store user-uploaded files or generated content

Edit this page | Report an issue