Problem
TART_HOME already allows Tart's VMs and cache to live on an external drive, as documented through #221 and #845. It works well when a user has one alternate storage root.
Using multiple roots is less ergonomic: callers must export or prefix TART_HOME with a path for every command, remember which root contains each VM, and reproduce those paths across scripts. The path-based approach proposed in #199 was closed in favor of TART_HOME, but named roots could remain fully compatible with that decision.
Proposal
Allow users to register storage roots by name and select one per command. For example:
tart storage add internal ~/.tart
tart storage add external /Volumes/VMs/tart
tart storage list
tart --storage external list
tart --storage external run review-macos
This would be a small configuration layer over the existing Tart home abstraction rather than a new VM format.
Suggested behavior
- Preserve the current default storage location and
TART_HOME behavior.
- Define clear precedence between
--storage, TART_HOME, and the default location.
- Apply the selected storage root consistently to VMs, OCI cache, temporary files, pruning, and free-space checks.
- Namespace duplicate VM names by storage profile.
- Validate that configured locations exist and are writable.
- Warn when a non-APFS destination prevents efficient copy-on-write cloning.
- Removing a profile should remove only its configuration, never its VMs or cache.
Alternatives considered
Shell aliases such as TART_HOME=/Volumes/VMs/tart tart ... work, but they duplicate absolute paths and provide no discovery mechanism for tools or users. Symlinking ~/.tart also makes switching roots awkward and has caused support issues in the past.
Would named storage profiles be acceptable as an additive interface over TART_HOME?
Problem
TART_HOMEalready allows Tart's VMs and cache to live on an external drive, as documented through #221 and #845. It works well when a user has one alternate storage root.Using multiple roots is less ergonomic: callers must export or prefix
TART_HOMEwith a path for every command, remember which root contains each VM, and reproduce those paths across scripts. The path-based approach proposed in #199 was closed in favor ofTART_HOME, but named roots could remain fully compatible with that decision.Proposal
Allow users to register storage roots by name and select one per command. For example:
This would be a small configuration layer over the existing Tart home abstraction rather than a new VM format.
Suggested behavior
TART_HOMEbehavior.--storage,TART_HOME, and the default location.Alternatives considered
Shell aliases such as
TART_HOME=/Volumes/VMs/tart tart ...work, but they duplicate absolute paths and provide no discovery mechanism for tools or users. Symlinking~/.tartalso makes switching roots awkward and has caused support issues in the past.Would named storage profiles be acceptable as an additive interface over
TART_HOME?