What is Storage?
Storage is Triform’s built-in file management system that enables your Actions to save and retrieve files. Whether you’re processing documents, generating reports, or handling uploads, Storage provides a simple, secure way to work with files in your workflows.Key Features
- S3-Compatible — Works with any S3-compatible storage backend
- Project-Scoped — Files are isolated per project for security
- Simple API — Two functions:
save_file()andget_file() - Automatic Authentication — No manual credential management needed
- Secure by Default — Encrypted storage with proper access controls
Using Storage in Actions
Saving Files
Usesave_file() to store a file in your project’s storage:
filename— Name for the file (including extension)content— File content (bytes, string, or file-like object)content_type— MIME type of the file (optional, auto-detected if omitted)
Retrieving Files
Useget_file() to retrieve a previously saved file:
file_path— The path returned fromsave_file()or provided via input
Common Patterns
Pattern 1: Document Processing Pipeline
Pattern 2: Report Generation
Pattern 3: Image Processing
File Upload via API
You can upload files to your projects via the FormData API:Storage Configuration
Storage is configured at the project level via Modifiers:- Go to Project → Properties → Modifiers
- Click Add Modifier → Storage
- Configure your storage backend (S3 credentials, bucket, region)
- Save
save_file() and get_file().
Storage Limits
| Plan | Storage Limit | File Size Limit |
|---|---|---|
| Free | 1 GB | 10 MB |
| Pro | 50 GB | 100 MB |
| Enterprise | Custom | Custom |
Security
- Encryption at Rest — All files are encrypted in storage
- Encryption in Transit — HTTPS for all file transfers
- Project Isolation — Files are scoped to projects, preventing cross-project access
- Access Control — Only authenticated Actions within the project can access files
- Credential Management — Storage credentials are managed by Triform, never exposed to Actions
Best Practices
Use meaningful filenames — Include dates, IDs, or descriptive names for easier debugging
Clean up temporary files — Remove files you no longer need to save storage
Handle large files carefully — Stream large files rather than loading entirely into memory
Check file existence — Handle cases where files may not exist gracefully
Troubleshooting
Problem:save_file() fails with permission errorSolution: Check that storage modifiers are configured for your project Problem:
get_file() returns empty or NoneSolution: Verify the file path is correct and the file exists Problem: File uploads timeout
Solution: For large files, consider chunked uploads or compression