Spaces:
Build error
Build error
| # OpenHands Storage Module | |
| The storage module provides different storage options for file operations in OpenHands, used for storing events, settings and other metadata. This module implements a common interface (`FileStore`) that allows for interchangeable storage backends. | |
| **Usage:** | |
| ```python | |
| store = ... | |
| # Write, read, list, and delete operations | |
| store.write("example.txt", "Hello, world!") | |
| content = store.read("example.txt") | |
| files = store.list("/") | |
| store.delete("example.txt") | |
| ``` | |
| ## Available Storage Options | |
| ### 1. Local File Storage (`local`) | |
| Local file storage saves files to the local filesystem. | |
| **Environment Variables:** | |
| - None specific to this storage option | |
| - Files are stored at the path specified by `file_store_path` in the configuration | |
| ### 2. In-Memory Storage (`memory`) | |
| In-memory storage keeps files in memory, which is useful for testing or temporary storage. | |
| **Environment Variables:** | |
| - None | |
| ### 3. Amazon S3 Storage (`s3`) | |
| S3 storage uses Amazon S3 or compatible services for file storage. | |
| **Environment Variables:** | |
| - The bucket name is specified by `file_store_path` in the configuration with a fallback to the `AWS_S3_BUCKET` enviroment variable. | |
| - `AWS_ACCESS_KEY_ID`: Your AWS access key | |
| - `AWS_SECRET_ACCESS_KEY`: Your AWS secret key | |
| - `AWS_S3_ENDPOINT`: Optional custom endpoint for S3-compatible services (Allows overriding the default) | |
| - `AWS_S3_SECURE`: Whether to use HTTPS (default: "true") | |
| ### 4. Google Cloud Storage (`google_cloud`) | |
| Google Cloud Storage uses Google Cloud Storage buckets for file storage. | |
| **Environment Variables:** | |
| - The bucket name is specified by `file_store_path` in the configuration with a fallback to the `GOOGLE_CLOUD_BUCKET_NAME` enviroment variable. | |
| - `GOOGLE_APPLICATION_CREDENTIALS`: Path to Google Cloud credentials JSON file | |
| ## Webhook Protocol | |
| The webhook protocol allows for integration with external systems by sending HTTP requests when files are written or deleted. | |
| ### Overview | |
| The `WebHookFileStore` wraps another `FileStore` implementation and sends HTTP requests to a specified URL whenever files are written or deleted. This enables real-time notifications and synchronization with external systems. | |
| **Configuration Options:** | |
| - `file_store_web_hook_url`: The base URL for webhook requests | |
| - `file_store_web_hook_headers`: HTTP headers to include in webhook requests | |
| ### Protocol Details | |
| 1. **File Write Operation**: | |
| - When a file is written, a POST request is sent to `{base_url}{path}` | |
| - The request body contains the file contents | |
| - The operation is retried up to 3 times with a 1-second delay between attempts | |
| 2. **File Delete Operation**: | |
| - When a file is deleted, a DELETE request is sent to `{base_url}{path}` | |
| - The operation is retried up to 3 times with a 1-second delay between attempts | |
| ## Configuration | |
| To configure the storage module in OpenHands, use the following configuration options: | |
| ```toml | |
| [core] | |
| # File store type: "local", "memory", "s3", "google_cloud" | |
| file_store = "local" | |
| # Path for local file store | |
| file_store_path = "/tmp/file_store" | |
| # Optional webhook URL | |
| file_store_web_hook_url = "https://example.com/api/files" | |
| # Optional webhook headers (JSON string) | |
| file_store_web_hook_headers = '{"Authorization": "Bearer token"}' | |
| ``` | |