Mount on a Mac
Mount a filesystem on macOS with the same CLI: no macFUSE, no kernel extension and no sudo.
Mount your filesystem on a Mac with the same CLI and the same command as on
Linux. There is nothing else to install: no macFUSE, no kernel extension and
no sudo. The CLI hands the filesystem to the NFS client built into macOS,
through a private socket that only your user account can open.
It works with CLI 0.6.0 or later on Apple Silicon Macs running macOS 26.
1. Install the CLI
curl -fsSL https://mountable.io/install.sh | sh
mountable versionThe script installs mountable to ~/.local/bin. If it says that
directory is not on your PATH, add it for this terminal and for new ones
(zsh is the default shell on macOS):
export PATH="$HOME/.local/bin:$PATH"
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zprofileTo run the CLI without installing it, put npx -y mountable-cli (npm) or
uvx mountable (PyPI) in front of each command below instead of
mountable. These are the same channels as on Linux; see the
CLI reference.
2. Sign in
mountable loginApprove the code in the browser, as in the quickstart. A backend can also hand the Mac a one-time ticket instead; see read-only and read-write.
3. Mount
mkdir -p ~/work
mountable mount k5q2ztr4mvd7wn3xa6jhebcyfu ~/workReplace the example ID with your filesystem's. The mountpoint must be an existing directory that you own, such as one in your home folder.
The command stays in the foreground while the filesystem is mounted. In
another terminal, ~/work is now the filesystem. Programs and coding agents
use it like a local folder: git, vim, sed -i and editors' atomic saves
work there.
Read-only and read-write
mkdir -p ~/review
mountable mount --ro k5q2ztr4mvd7wn3xa6jhebcyfu ~/reviewWithout --ro the session is read-write. With --ro it is read-only, and
every write in the folder is refused.
Owners and admins can mount every filesystem in their organisation
read-write; members mount what they or their groups are
granted.
A session created elsewhere works too. Your backend creates a ticket
(mountable ticket create "$FS_ID" --ro, or the
API) and the Mac mounts
with it:
printf '%s\n' "$MOUNTABLE_TICKET" | mountable mount --ticket-stdin --json ~/review4. Unmount
mountable unmount ~/workOr press Ctrl-C in the terminal running mountable mount. Unmounting
another way, such as umount ~/work, also ends the mountable mount
process. If a file is still open, the mount is forced off instead. Writes
the service already confirmed are stored either way. Data a program wrote
that macOS had not yet sent can be lost when a mount is forced off, so call
fsync or close the file before you unmount (see
limits).
If the session is revoked or expires, the CLI forces the mount off: open
files and the folder stop working within seconds. If the mountable mount
process is killed, macOS removes the dead mount within about a minute.
Before then, mountable unmount ~/work forces it off and the next
mountable mount at that path replaces it; after that, mountable unmount
says the folder is not mounted (not_mounted).
Good to know
A Mac mount stores every write before confirming it, at about 7 MiB/s for
one stream. Keep databases such as SQLite on local disk, and add ._* to
your global gitignore, because macOS keeps extended attributes in ._ files
beside yours. The rest of the tips, such as rotating append-heavy logs,
trimming git's reflogs in busy repositories and checking errors in the
program that writes, are in Contract and limits on macOS.