Volumes are named, persistent storage directories that allow your workflows to store and share data across step executions. By using volumes, you can maintain state between different runs, manage shared files, and easily handle data persistence within your workspace.
When a workflow runs, a volume acts as a durable filesystem directory mounted within the step’s container at /storage/. Because volumes are branch-aware, each workflow branch works with its own isolated copy of the data, ensuring that your experiments and drafts do not impact your production workflows.
Read how to monitor your team’s volume here.
Key benefits
Persistence: Data stored in a volume survives workflow runs and redeploys, ensuring your state is available when you need it.
Transactional integrity: Changes made to a volume are only committed once a step completes successfully. If a step fails, the volume remains unaffected, preventing data corruption.
Concurrency control: You can easily manage how multiple steps interact with the same data by choosing between read-only and read-write modes.
Types of volumes
There are two primary ways to categorize volumes based on how they are accessed:
Space volumes: These are shared across all workflows within a specific space. They are scoped by the space ID and branch ID, ensuring team-wide access while maintaining branch isolation.
Personal volumes: These are scoped to an individual user. These are ideal for personal chat sessions or managing user-specific states.
Common use cases
Databases: You can easily work with SQLite databases. Typically, this involves one writer step that owns the database file, with multiple read-only steps performing queries.
File management: Use volumes to store and serve user-uploaded files.
Workflow state: Keep track of session data, cursors, caches, or configuration settings that need to persist over time.
