100 comments

[ 2.9 ms ] story [ 169 ms ] thread
So it's, scp?
Hopefully more user friendly...
Both scp and sftp has a different trust model - you need credentials set up beforehand. Configuring SSH/Linux permissions for sharing files in a low-trust environment is possible, but full of foot-guns.
can this replace sync thing?
This seems like an Airdrop replacement as opposed to an iCloud/Dropbox/GDrive replacement like syncthing?
I would really like an internet-enabled version of this, like magic wormhole.

I don't know of a magic wormhole client for iOS.

It's frustrating trying to transfer high-res photos between phones. All the messaging apps silently mangle them. :(

This would be perfect, but it only works on a LAN. AirDrop gets the job done in those cases.

webwormhole.io has been working quite well for me! It uses WebRTC-based P2P connections where feasible, but also works via relaying otherwise.
(comment deleted)
I've found using cloud storage (i.e. actual cloud storage, not "automatically upload compressed photos to the cloud" storage) is the best for this. The magic wormhole type approach is are awkward over the internet with phones because each side has to synchronously agree on speed and uptime or the transfer breaks. With a cloud storage middleman you can upload as fast as your phone can whenever your device is up then anyone can download as fast as they can whenever their device is up.
Using SHA256 I was able to prove mathematically, that files you upload to google drive are the same after you download them again. You could also plug an external drive into a raspberry pi (or any computer really) and run samba on it. You would have to do some research to find a good samba client for iOS as I am not an iphone user. You could make all the media on your samba server available to all the devices on your LAN.
https://xosh.org/p2p-tools/ Compile this list of web and CLI tools for this a while ago. Some of these are dead now.

EDIT: Found snapdrop at https://onedoes.github.io/snapdrop/ and a fork PairDrop is in active development https://github.com/schlagmichdoch/pairdrop

IIRC, snapdrop does compress/process pictures. Anecdotal evidence is receiving .jpeg's on my PC after sending .heic's from my iPhone.
I’m fairly sure that it’s iOS/Safari who does give the website the jpegs when you use the photo chooser.

Even in other sharing workflows, sending the HEICs is a pita.

Interesting, thanks for the clarification.

I've been searching for a low-friction way to get original photo files from iOS to Linux. USB has been really unstable and P2P sharing through Safari does not provide uncompressed originals (in general, apparently).

Been running a selfhosted install of PairDrop for a few months now. It's so useful.
Wormhole works perfectly, I did not know about this. Thank you for sharing.
https://github.com/nwtgck/piping-server-rust/releases/expand...

https://github.com/nwtgck/go-piping-server/releases/expanded...

There is also a Typescript version.

Unlike MagicWormhole, this does not require Python libraries. Any HTTP client will do, whether graphical browser, text-only browser, curl, anything that can make HTTP requests. Javascript is optional.

There is an example server run by the author for testing but unlike MagicWormhole it is not a default; the address is not found anywhere in the source code.

https://ppng.io/noscript

Magic Wormhole, or PAKE in general, might be well-suited for use in the process of transferring files between two or more parties, but here the question was about transferring files between two computers operated by the same party.

I’ve only used it for local sharing but sharedrop.io claims to work over the internet via “rooms”?
Why not Tailscale drop? Cross platform, even mobile. Reliable. Fast. Easy.
So this is like Taildrop but uses the local net instead of the tailnet?
LocalSend is also worth checking out. It has a much better UX.
(comment deleted)
Another alternative: https://payload.app/ (disclaimer: I made it)

- Subjectively more pleasant UX/UI

- Drag and drop

- Directories are supported and reproduced on the receiver

- Resumes transfers that were interrupted, across restarts too

- No mobile support (Tauri is working on it)

I'm currently working on a paid WAN version with a free tier.

Any source? No support for FreeBSD it seems.
Short answer: no and no (although I've heard that people have used it on SteamDeck - completely a surprise to me)

I've never dabbled with FreeBSD. It seems to not be supported by Tauri (the GUI wrapper). That said, with the agent binary (written in Go) would probably work.

It's closed source, out of unethical front-running paranoia as I'm building recognition and trust. That said, I'd like to release the agent open source in the future (like Tailscale), which could easily double as a CLI.

Steam Deck runs Arch Linux, so they’re probably using the AppImage.

I think it’s a good selling point, because there’s no de facto app for transferring files between all 3 major operating systems. I’ll give it a try on Steam Deck.

A similar utility (much more bare-bones though) that a friend wrote is https://github.com/akovacs/uploadserver

It's basically a nicer version of:

    python -m http.server 8000
Basically just start the file server, and then navigate to it using the web browser of your choice on any device (no need for a client application).

It works on Windows, Mac, and Linux, and therefore should probably work on FreeBSD as well if you can install a Rust toolchain:

    pkg install curl
    pkg install git
    pkg install rust
    git clone https://github.com/akovacs/uploadserver
    cd uploadserver
    cargo run --release
Then navigate to your machine's ip address port 8000 in the browser of your choice and upload files using the web UI or directly via curl:

    curl -X POST --data-binary @file_to_upload.txt http://localhost:8000/file_to_upload.txt
MIT licensed, so please feel free to do whatever you want with it as long as you provide attribution.
This would be absolutely perfect if it worked on mobile (not open-source either so nobody but you can add it!), without mobile it's useless for me :(

Good job though, it looks nice!

Absolutely. As a utility app for individuals, it's by far the most critical missing feature.

However, I need revenue to justify the project long term (I have no investors), so I'm prioritizing WAN. I've contributed to Tauri before, and I really hope I can keep using it end-to-end (cross platform dev is a mess).

I would highlight the support for directories more. It's a vital feature that none of the others in this space seem to support.
In this case (docker image) I create an archive and send it, saves traffic too.
I use LANDrop regularly. It's the lowest-friction solution I've found so far to the whole "why doesn't this #$%@#$% SMB access work, it was working fine last week" thing with a mixed-OS set of computers.
Samba/SMB being so bad is the main reason I still often fire up ftpdmin and winscp to transfer files across machines.

That and bad USB ports.

And there being some decent FTP clients for android.

Why aren’t there any great remote drive mounting protocols? NFS works in some cases but is ancient and really only suited to cluster backplanes. Samba/CIFS sucks. SSHfs is a hack. It’s a super common thing that just has no solution.

I guess there’s way more money in solving it with a heavy cloud service that can charge rent for what should be a trivial core feature of every OS.

plan9's protocol seemed like it might have some legs...but it seems to be being deprecated
WSL on windows uses plan 9 protocol(s) to mount my linux VM as a folder under windows.

*As suggested by another HNer.

Because there hasn’t been enough of a need. The main use cases are covered by what we’ve already got.
> NFS works in some cases but is ancient and really only suited to cluster backplanes.

I was given to understand that NFSv4 was made to be much better for these purposes?

SMB is great and Windows handles it perfectly fine (as it should), but outside of Windows is problematic because Samba is sincerely fucking terrible and the only reason I can see why anyone uses it is because there's nothing better.

Seriously, I can even get my Windows 98 SE laptop to talk with the rest of my Windows machines (including Windows 11) via SMB perfectly fine. Meanwhile, Samba requires divine miracles just to get the bloody thing working for thirty seconds.

Counterpoint to SMB on Windows being great:

SMB usually works well in a domain environment between client and server machines if they are all on the same domain. SMB often and randomly does not work between two client computers on a domain and in workgroup environment. I have to configure SSH server on Windows computers that I access often because of random inability of Windows to talk to another computer (sometimes sitting right next to it).

Samba on the other hand takes some setting up but once it works, it keeps working...until the next OS/major version upgrade.

Here's some terrible, unholy advice along the lines of violating "don't cross the streams":

Setup a WINS server.

WINS, ancient and depreciated, and "they" say it should never be needed anymore, will act as a "cat herder" in a workgroup environment.

The nice part about WINS is the server requires no configuration. You start the service and point the clients to it and that's it. Configure your DHCP server to hand out the WINS address and you're done. There's a good chance your problems may disappear.

(comment deleted)
I used it to transfer mp3s between phones and now I cannot find the files on the destination phone. I mean I can play them from within the app, but they are not available in phone's file browser
An aside, but I was just setting up a SMB share on a Linux machine (Ubuntu) and had the absolute similar experience as mentioned above. However, when hitting the share points with osx, it worked flawlessly from the original setup.

The windows machines on the other hand took a lot of figuring out to get the access I was looking for. Seems the windows built in username AND a (broken?) Form of password caching really does a number when using SMB shares hosted on a not windows machine. I 100% agree with you however, it is a super frustrating experience that leaves one bewildered, even though it should be simple to get up and running.

(It took far less time to setup goestools on 2 machines, than to get the shared folders to work correctly through the household)

What protocol is used for the file transfer?
This should work on ZeroTier since it emulates a LAN. Have to try it.
In case anyone wants a variant that doesn’t even require a download I can heartily recommend:

https://www.sharedrop.io/

I think of Sharedrop every time HN has a discussion about how the web has gotten too complicated and it should just all be documents etc etc… here’s a truly useful app, cross platform out of the box, neatly sandboxed with no download required. If I was feeling paranoid and wanted to know if my files are being sent to some third destination I’d be able to open up dev tools to check. A lot more challenging with a native app.

https://github.com/szimek/sharedrop

"If I was feeling paranoid and wanted to know if my files are being sent to some third destination..."

then I would not use a third party website. I would want to prevent this unauthorised transmisison to a third party from happening rather than discover it was already happening. By then, it would be too late. Even just having all one's transfers, IP, time, date, possibly browser fingerprint, be recorded in someone else's httpd access log seems unnecessary.

But I'm not feeling paranoid. Rather, I like downloads. I like so-called "native apps", otherwise known as programs. I like them written in certain languages. I like to read and edit the source code and to compile static binaries. I enjoy it. Javascript is not one of the languages I prefer. Nothing against it. I just don't have much need for it if I want to transfer files.

You can open up share point then unplug your ISP cable and it will still work
I'm playing devil's advocate a little, but this doesnt mean it doesnt send your files to a third party, it just means it also sends them locally as advertised
I don't use SharePoint, sorry.

I have mutiple methods of transferring files between computers without an internet connection. None of them use Javascript.

> If I was feeling paranoid and wanted to know if my files are being sent to some third destination I’d be able to open up dev tools to check. A lot more challenging with a native app.

The reason we're generally "paranoid" about running arbitrary code in the browser is that every fucking website wants to run arbitrary code in the browser, not because an app that actually has a reason to do it, does.

A website should just be a document when it is just a document, which is 95%+ of the content linked on HN.

I think there should be three modes, one mode for documents and two modes for apps. Right now the document "mode" is too overpowered while the "app mode" is under-powered. If the user switches to "app mode" it should give the website access to the web API's, while in document mode it should only be possible to manipulate the DOM. The second app mode should make the app more "native" like and unlock more API's. Or we should just fork the browser into two programs, one for documents and one for app runtime.
That's really cool! How does it do the actual P2P connections? WebRTC?
Can someone please explain to me why sharedrop does not work with VPN / TOR?

Does anyone know of any alternatives that work with VPN / TOR?

I love the fact that sharedrop is open source, you can host it yourself, it works without registration/login and you don't need to install anything except a browser.

VPN/TOR will traditionally take over all connections and route them through its own tunnel. Yes the tunnel does go over the LAN/WLAN but it does not interact with the LAN/WLAN directly and this is a good thing because it means that everything is sent protected to the VPN/TOR tunnel you use.
I use sharedrop so often and it's a godsend.
I tried sending test files from ios to android and vice-versa.

Both the times it errored out with “it was not possible to establish direct connection with the peer”

Both devices are in the same wifi network.

Yeah but why a downloadable? Can't we use webrtc to achieve the same on the browser itself?
The browswer adds another layer of indirection you don't need. Why would you prefer to download/use that functionality through the browser rather than straight to your machine?
Sandboxed execution environment. Alway up to date for both sides doing the sharing. And because I don't want to download some unrelated software just to be able to download a file from one of my other devices. And unless I'm building this app for each platform I use, I have no guarantees that the binary I'm downloading is from the code on the github.
I’ll stick with https://pairdrop.net, doesn’t even require any installs or downloads.
Looks identical to snapdrop.net (before the domain shut down)
I use a fork of this (or, rather, a fork of the original) hosted on my LAN.
Android really did drop the ball on building decent native file browser apps for Mac/windows. Frequent adb disconnections or needing to reboot the Mac for the USB host/adb handshake to work...
This was a class of tool I didn't even know existed until recently. After Windows 11 came out I switched to Linux Mint, discovered Warpinator, and now I have one less problem in my life.
There are SO MANY of these out there and none of them are interoperable. Can't a few of the devs get together and define an open standard for nearby sharing so the Apple users finally stop (rightly) laughing at us?
ssh/sftp is interoperable
OT: Responding on a now-threadlocked submission of yours: <https://news.ycombinator.com/item?id=36966205>

That's worth retrying as it didn't get picked up. I'm still thinking through further responses though it's quite similar to concepts I've been promoting on HN for years now:

<https://news.ycombinator.com/item?id=10077674> 8 y.a.

<https://news.ycombinator.com/item?id=26893033> & <https://news.ycombinator.com/item?id=26822263> 2 y.a.

<https://news.ycombinator.com/item?id=34182022> 7 months ago

Apple's version isn't interoperable either.

We already have standards for local networks: mDNS + FTP / SMB / WebDAV.

None of those are for sending files, they provide remote access to a filesystem. The find-connect-mount-browse workflow is good for many situations, but for when I want to send a photo to a friend sitting across the table from me, it's simply unusable.
wait, why not just ssh/sftp?
Lots of configuration needed to be able to just send or receive files.

Am I supposed to make another account just for receiving files? What if I get it wrong?

How will I keep track of the long password I suddenly need or the keys I'm going to have to share?

And then I'm going to need a new app anyway because mobile has no builtin SSH.

And then there's no UI, so I'll have to do lots of typing and it will be more work unless you touch type...

SSH is great but this is a specific use case they're making a dedicated app for, that makes it easy and doesn't add more configuration, which I'd then have to maintain maybe want a dotfile management tool.

There's so many pieces to a CLI workflow. It's awesome if you do the kind of work that benefits from it already and everything's set up, but... I don't use SSH at home. Or have a dotfile management system. Or manage files often on the CLI.

(comment deleted)
I like using pairdrop.io with the snapdrop android app