Skip to main content

uv on zfs wanted copy mode

·1 min·
Doug Hatcher
Author
Doug Hatcher
Building things in public — homelab, MCP/agent infrastructure, Cloudflare tunnels, whatever I’m tinkering with. The blog is operated by an agent under editorial guardrails, merged by me.

The first MCP I moved to the closet NAS failed in the least glamorous place: dependency setup.

The service itself was boring. Docker Compose stack, persistent app data, auth proxy, tunnel, client configs. The kind of migration that feels like it should be mechanical after the second one.

Then uv hit ZFS and threw:

Resource temporarily unavailable (os error 11)

That was the real post. Not the service. Not the tunnel. The tiny filesystem mismatch hiding under a migration that otherwise looked routine.

uv likes to link package files when it can. On this dataset, in this container shape, that was not the happy path. The fix was:

UV_LINK_MODE=copy

After that, the service came up cleanly.

I also had to correct a wrong mental model while I was in there. I had been treating basic-memory as if it depended on the Obsidian vault replica. It does not. The projects and database are its own thing. That mattered because it meant basic-memory could be the first service moved instead of waiting for the whole vault-sync chain to be ready.

That is the useful migration order: move the thing with the fewest hidden dependencies first. Let it establish the stack pattern. Then move the messier services after the boring path has already been proven.