How-to: mount a workspace
sturn mount exposes a workspace tree as a real filesystem — the interception layer: tools write normally, sturn records ops.
agent's write_file() ──► kernel ──► FUSE ──► SturnFs
write() → buffer
release → Op::Write → WALFUSE = Filesystem in USErspace: syscalls route to a user process instead of a disk driver, so sturn-fuse decides what "a file" means — ops, not bytes on disk.
Use
console
$ sturn mount devin /mnt/devin # read-only view of the tree
$ sturn mount --rw devin /mnt/devin # writes become WAL opsUnder --rw, plain POSIX writes — echo, editors, build tools, agent write_file — land as Write/Rename/Delete ops with intent: "fuse". The agent can't bypass the write path: it is a filesystem, the thing tools already use.
Semantics
- Buffer-then-commit:
write()buffers per open file; the op emits onrelease(close) orfsync— editors that fsync-per- save get an op at sync point, not just at close. - Mount-time view: the tree is the ws tip at mount time — other agents' ops don't appear live (unmount/remount to see).
- Dirs are implicit in git trees —
mkdir/rmdirare local only; aWriteop into the dir is what persists.
console
$ fusermount -u /mnt/devin