1. I generally don't like patterns like this:
a = transform(a)
You reuse one variable name for multiple purposes and this makes reading the code harder.
2. You use JSON as data exchange format. JSON parsing can be viewed as needlessly complex. One might argue the risks are not so high in most scenarios, but I don't feel it to be “the Qubes way” there.
3. You identify files by inode numbers. When I guess inode number, what prevents me from escaping from my root directory?
4. How is directory traversal prevented?
Note that I've taken rather a brief look, it was not a deep review.
i created a poc of a file-sharing-between-VMs-concept. it
utilizes fuse and qubes-rpc to make a whole directory from one
VM visible in another VM.
NFS also brings some complexities. They aren't related to dom0, but rather to AppVMs, firewall config etc.