CLI Reference
Virtual Filesystem Commands
Mount Dits repositories as virtual drives. Files appear instantly and stream on-demand - no need to download entire files before opening them.
Local-only — requires a fuser build
dits mount requires a build with the FUSE feature enabled (cargo build --features fuser) and works against the local content store only. Files appear immediately as placeholders and are hydrated on access from the local .dits store. Streaming chunks on demand from a remote (the multi-terabyte just-in-time workflow shown below) is roadmap— it depends on networked fetch, which is not implemented yet. See the roadmap.| Command | Description | Usage |
|---|---|---|
| mount | Mount repository as virtual filesystem | dits mount [OPTIONS] [MOUNTPOINT] |
| unmount | Unmount virtual filesystem | dits unmount [OPTIONS] [MOUNTPOINT] |
| cache-stats | Show VFS cache statistics | dits cache-stats [OPTIONS] |
dits mount
Mount a repository as a virtual filesystem using FUSE. Files and directories appear at the mount point, with data streamed on-demand.
Synopsis
dits mount [OPTIONS] [MOUNTPOINT]Options
--read-only Mount as read-only (no modifications)
--allow-other Allow other users to access mount
--commit <REF> Mount a specific commit or tag
--branch <NAME> Mount a specific branch
--background, -b Run mount in background
--cache-size <SIZE> Set local cache size (default: 10GB)
--cache-dir <PATH> Override cache directory
--prefetch Enable aggressive prefetching
--prefetch-size <N> Prefetch next N chunks
--no-sparse Disable sparse file support
-v, --verbose Show detailed mount informationExamples
# Mount to default location
$ dits mount
Mounting repository at /Volumes/dits-project...
Virtual filesystem ready.
Repository: my-project
Branch: main (abc1234)
Files: 1,234 available
Mode: read-write
Cache: 10 GB (0 bytes used)
Press Ctrl+C to unmount (or use 'dits unmount')
# Mount to specific location
$ dits mount /mnt/project
# Mount in background
$ dits mount -b /mnt/project
Mounted at /mnt/project (pid: 12345)
# Mount as read-only
$ dits mount --read-only /mnt/project
# Mount specific commit (great for reviewing old versions)
$ dits mount --commit v1.0 /mnt/v1-release
# Mount specific branch
$ dits mount --branch feature/color-grade /mnt/color-grade
# Mount with large cache for heavy editing
$ dits mount --cache-size 100GB /mnt/project
# Mount with prefetching for smoother playback
$ dits mount --prefetch --prefetch-size 10 /mnt/projectHow It Works
Mount Architecture:
┌─────────────────────────────────────────────────────┐
│ Your Application │
│ (NLE, Media Player, etc.) │
└────────────────────────┬────────────────────────────┘
│ Standard file I/O
▼
┌─────────────────────────────────────────────────────┐
│ FUSE Mount Point │
│ /Volumes/dits-project │
└────────────────────────┬────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────┐
│ Dits VFS Layer │
│ • File → Chunk mapping │
│ • Prefetching logic │
│ • Cache management │
└────────────────────────┬────────────────────────────┘
│
┌─────────────┴─────────────┐
▼ ▼
┌──────────────┐ ┌──────────────┐
│ Local Cache │ │ Remote │
│ .dits/cache/ │ │ Storage │
└──────────────┘ └──────────────┘dits unmount
Unmount a virtual filesystem. Ensures all pending operations complete before unmounting.
Synopsis
dits unmount [OPTIONS] [MOUNTPOINT]Options
-f, --force Force unmount (may lose unsaved data)
--all Unmount all Dits mounts
--wait Wait for operations to completeExamples
# Unmount default location
$ dits unmount
Unmounting /Volumes/dits-project...
Syncing pending changes... done
Unmounted successfully.
# Unmount specific path
$ dits unmount /mnt/project
# Force unmount (when mount is stuck)
$ dits unmount -f /mnt/project
Warning: Force unmounting. Unsaved changes may be lost.
Unmounted.
# Unmount all mounts
$ dits unmount --all
Unmounting 3 mounts...
/Volumes/dits-project... done
/mnt/v1-release... done
/mnt/color-grade... doneClose Applications First
Before unmounting, close any applications that have files open from the mount. Use
--force only as a last resort, as it may interrupt file operations.dits cache-stats
Show statistics about the VFS cache. Useful for understanding cache performance and managing disk usage.
Synopsis
dits cache-stats [OPTIONS]Options
--json Output in JSON format
--clear Clear the cache
--top <N> Show top N cached files
-v, --verbose Show detailed statisticsExamples
$ dits cache-stats
VFS Cache Statistics:
Cache Location: ~/.cache/dits/vfs
Cache Limit: 10 GB
Current Size: 4.2 GB (42%)
Cached Chunks: 4,567
Hit Rate: 94.2% (last hour)
Miss Rate: 5.8%
Bytes Read: 12.5 GB
Bytes from Cache: 11.8 GB (94.4%)
Bytes from Remote: 700 MB (5.6%)
Recent Activity:
Chunks fetched: 234 (last hour)
Chunks evicted: 45 (LRU)
Prefetch hits: 189 (80.8%)
# Show top cached files
$ dits cache-stats --top 10
Top Cached Files:
File Chunks Size
─────────────────────────────────────────────────
footage/scene01.mov 456 456 MB
footage/scene02.mov 389 389 MB
project.prproj 12 48 MB
...
# Clear the cache
$ dits cache-stats --clear
Clear VFS cache (4.2 GB)? [y/N] y
Cache cleared.
# Verbose stats
$ dits cache-stats -v
Cache Configuration:
Path: ~/.cache/dits/vfs
Max Size: 10 GB
Eviction Policy: LRU
Prefetch: enabled (5 chunks ahead)
...VFS Use Cases
Instant Access to Large Repositories (planned)
This workflow depends on networked partial clone and remote chunk streaming, which are roadmap. The output below is illustrative of the planned design, not current behavior.
# [PLANNED] Clone metadata only (fast!)
$ dits clone --filter blob:none https://dits.example.com/huge-project
Cloning into 'huge-project'...
Metadata fetched: 15 MB
Repository ready (large repositories available on demand)
# Mount and start working immediately
$ cd huge-project && dits mount /mnt/huge
Files available at /mnt/huge
# Open files - they stream on demand from the remote
$ vlc /mnt/huge/footage/scene01.mov
# Video plays immediately, chunks stream as neededMulti-Version Access
# Mount multiple versions simultaneously
$ dits mount --commit v1.0 /mnt/v1 &
$ dits mount --commit v2.0 /mnt/v2 &
$ dits mount --branch main /mnt/current &
# Compare files across versions
$ diff /mnt/v1/config.json /mnt/v2/config.json
# Reference old footage while working on new cut
$ ls /mnt/v1/footage/
$ ls /mnt/current/footage/Remote Editing Workflow
# On a remote machine with limited storage
$ dits mount --cache-size 5GB /mnt/project
# Edit uses local cache intelligently
# - Recently accessed chunks stay in cache
# - Rarely used chunks evicted automatically
# - Prefetching loads chunks before you need them
# Check cache efficiency
$ dits cache-stats
Hit Rate: 96.5% # Most reads from local cachePlatform Support
| Platform | Support | Notes |
|---|---|---|
| macOS | Full (macFUSE) | Requires macFUSE installation |
| Linux | Full (FUSE) | Built-in kernel support |
| Windows | Full (WinFsp) | Requires WinFsp installation |
Related Commands
- Repository Commands - Clone and manage repos
- Proxy Commands - Generate lightweight proxies
- Maintenance Commands - Cache management
Related Topics
- Virtual Filesystem Guide - Deep dive into VFS
- Chunking & Deduplication - How streaming works