Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.mirage.strukto.ai/llms.txt

Use this file to discover all available pages before exploring further.

Overview

FUSE is part of the Fingers layer alongside Ops. Where Ops dispatch fingers inside Mirage, FUSE exposes the same fingers to the host OS through a real mount point. Once mounted, any process, shells, editors, scripts, can act against mounted resources through standard POSIX file I/O, using the same fingers every Gesture is built on. The mount runs in a background thread and is automatically cleaned up when the Workspace closes.

How It Works

MirageFS implements FUSE operations by delegating to the Ops layer:
FUSE CallOps CallDescription
getattrstatFile metadata
readdirreaddirDirectory listing
readreadRead file content
writewriteWrite with buffering
createcreateCreate new file
mkdirmkdirCreate directory
unlinkunlinkDelete file
rmdirrmdirRemove directory
renamerenameMove or rename
truncatetruncateTruncate file

Virtual Directories

FUSE creates virtual directories from mount prefixes. The directory /s3/ doesn’t physically exist - it’s synthesized from the mount table so that ls /tmp/mirage-xxx/ shows all mounted prefixes.

Write Buffering

Writes are buffered per file handle. Data is flushed to the resource on flush or release (file close), reducing the number of API calls for sequential writes.

Special Files

FUSE provides /.mirage/whoami which returns metadata about the current agent, working directory, and mounted prefixes.

Platform Notes

  • macOS: Requires macFUSE. Metadata files (.DS_Store, ._*, .Spotlight-V100) are automatically filtered.
  • Linux: Uses fusermount. No special filtering needed.
FUSE is optional - mirage works without it for Python-only and virtual shell execution.