Skip to Content
We are live but in Staging 🎉

dodil data mount

Mount a K3 bucket as a local filesystem so you can interact with objects through normal file operations. This is the one Storage feature with no API-reference counterpart — it is entirely client-side. The CLI forks a detached daemon that speaks gRPC ListObjects / GetObjectInfo to the control plane and HTTP to the byte plane, and presents the result as a filesystem.

Requires FUSE on the host for the default mount type (fuse); --type nfs runs a local NFS server instead and shells out to sudo umount on teardown.

K3 buckets are flat — keys just happen to contain / — so the mount synthesizes a directory tree from key prefixes. Two consequences: directories are not real objects, and the listing inherits every limit of ListObjects (server default 1000 keys, and the K3-managed _warehouse/ and _vector/ prefixes filtered out).

State lives under ~/.k3/mounts.json is the mount registry, spool/<bucket>/ buffers local writes. If a mount fails to come up, the daemon’s stderr is in $TMPDIR/k3-mount-<bucket>.log; set K3_FUSE_DEBUG=1 before mounting to trace FUSE operations.

dodil data mount

dodil data mount [bucket] [mount-path] [flags]

Both arguments are required. Creates the mount path if it doesn’t exist, starts a detached daemon in its own session (so it outlives your shell), and registers the mount in ~/.k3/mounts.json. The command returns as soon as the daemon is started — it does not wait for the filesystem to be ready, so a missing FUSE driver surfaces in the log file rather than in your terminal.

FlagTypeDefaultDescription
--typestringfuseMount type — fuse or nfs. Any other value fails in the daemon.

Examples:

# Default: FUSE dodil data mount kb-prod ~/kb-prod-fs # NFS dodil data mount kb-prod ~/kb-prod-fs --type nfs

FUSE is read-write: create, read, write, unlink and mkdir are all wired up, and writes are spooled locally then flushed to the bucket. NFS builds an in-memory snapshot of the bucket at mount time by downloading every object — fine for a small bucket, not for a large one. Prefer FUSE unless you specifically need NFS.

For a durable, high-throughput filesystem view, rclone mount against https://object.uk-lon-1.dodil.io is the better-tested path — it does real caching, retries and concurrency. dodil data mount is the convenience option, not the performance one.

dodil data unmount

dodil data unmount [mount-path]

Looks the path up in the registry, sends the daemon a SIGINT, then force-cleans the mount point — fusermount -uz for a FUSE mount, sudo -n umount -f / -l for NFS (so an NFS unmount needs passwordless sudo) — and unregisters it. The path must be the exact one you mounted; there is no unmount-by-bucket.

Example:

dodil data unmount ~/kb-prod-fs

dodil data mount list

dodil data mount list

Lists the mounts recorded in ~/.k3/mounts.json, one line each:

Active Mounts (1): - /Users/you/kb-prod-fs (Bucket: kb-prod, PID: 41233, Type: fuse)

This reads the local registry, not the server — an entry survives a daemon that died, so a listed mount is not proof of a live one. Check the PID if in doubt.


See also