Luwu 陆吾

Files

Your devices can browse, preview, download and upload files in your home folder on each computer.

On the phone, open a computer, then Files. Images, PDFs, video, markdown and code open in place; anything else goes to the share sheet. Upload photos, videos or files with +. In a terminal, the paperclip uploads a file and types its path at the cursor, which is the quickest way to hand a screenshot to an agent.

From another computer:

luwu fs ls mac:~/Downloads
luwu fs put screenshot.png mac          # to its inbox, ~/.luwu/inbox
luwu fs get mac:~/report.pdf .
luwu fs find mac:~/src '*.go'

What isn't shared

These are never shared, even with your own devices: ~/.ssh, ~/.gnupg, ~/.aws, ~/.azure, ~/.kube, ~/.docker, ~/.password-store, ~/.config/gcloud, ~/.config/gh, Keychains and browser cookies on macOS, any .env, .env.*, .netrc, .pgpass or .git-credentials file, and Luwu's own folder except its inbox.

Every access is confined to the shared folders by the operating system's path handling (.. and symlinks can't escape), and symlinks are resolved before these rules are checked.

Changing what's shared

Put this in ~/.luwu/files.json, then luwu down && luwu up:

{ "roots": ["/data/projects"], "deny": ["Documents/private"], "disabled": false }

roots adds folders outside your home, deny hides folders inside it, and "disabled": true turns files off on that computer.

Uploads

Uploads go in 256 KiB pieces, resume after a dropped connection, and are checked against a SHA-256 before the file appears. Deleting from the phone moves files to the trash (on macOS, ~/.luwu/trash).