dimfisch 1 day ago

"Because Microsoft hates the world, they will show a "Windows protected your PC" warning when you try.

Because Apple hates the world even more, I can't publish it for iOS."

Gold

  • raddikal 21 hours ago

    > "Because Microsoft hates the world, they will show a "Windows protected your PC" warning when you try.

    Yet at the end of the day, Microsoft is a Rust Foundation platinum member.

    • gazby 18 hours ago

      There are many, many ways for a corporation to express its hatred of the world. There's only one way to become a platinum member of the Rust Foundation, and Microsoft finds that in its couch cushions.

synctext 1 day ago

Interesting project, towards a decentralized Internet!

The heavy lifting is done in this function, pairing. You link your personal devices together, solid idea [0].

This Flipflop project relies on the Iroh library for NAT/Firewall puncturing, external address discovery and overlay networking. Connecting two 5G devices, without a coordinating central server is possible, but very hard. Iroh simply relies on a server which you could self-host. Cool stuff, we stress tested it a while ago and it somewhat worked.

NAT connectivity is unsolved. My university lab conducted one of the bigger puncturing studies a decade ago [1]. Recently, we also bought 40+ or something 4G and 5G SIM cards in Europe for puncturing [2]. My master student traveled Europe by bus to get these local SIM cards. He worked day-and-night to connect these weird symmetric 5G NAT filter boxes and got it working. Simple sync collision and birthday paradox brute force... It all works sometimes, but insufficiently reliable for mass-adoption. You can't build a decentralized social media ecosystem on top. Like Iroh, best to use a central server. So then you have legal liability for your users. Unless an AI agent buys the server fully autonomously using Bitcoin, next years students got that working[3] :-)

[0] https://github.com/andunieee/flipflop/blob/62bb498520aacb60e...

[1] UDP NAT and Firewall Puncturing in the Wild, https://inria.hal.science/hal-01597969v1/document

[2] Mass Adoption of NATs: Survey and experiments on carrier-grade NATs, https://arxiv.org/html/2311.04658v2

[3] Self-replicating seedbox servers using programmable money, https://arxiv.org/abs/2609.05431

  • rklaehn 1 day ago

    We (iroh) don't do birthday paradox hole punching yet. There is some internal debate whether it is worth it.

    So if you are in an extremely weird NAT you will fall back to a relay, either our public relays, your own relays rented from us via iroh services, or a self-hosted relay.

    But I would argue that a p2p social application that occasionally uses a relay is very much preferable to a centralised app.

    The relay is generic internet infrastructure. It just forwards end to end encrypted connections. It can not learn anything about the content.

    A relay that is hosted on a non KYC server rented via ZCash would be interesting though if you are super paranoid.

    • synctext 1 day ago

      Yeah, we need "generic Internet infrastructure" for linking devices.

      By 2030 we hopefully understand the mathematics-of-trust and can link all the billions of citizens together in a single overlay.

      > non KYC server rented via ZCash would be interesting though if you are super paranoid.

      What will happen if a decentralized Internet emerged and presented an existential threat to existing profit margins? Company lawyer would start to attack you, correct?

      • broken-kebab 1 day ago

        >What will happen if a decentralized Internet emerged and presented an existential threat to existing profit margins? Company lawyer would start to attack you, correct?

        I think it's very misplaced concern. Commercially-viable internet will not be decentralized because of legal restrictions. If whatever engineering solution will be found to weaken them, governments will step in to curtail it. FWIW any moderately successful decentralization effort is more likely to be attacked from exactly this side: some countries will hate it for uncontrolled information dissemination, others for fiscal reasons.

      • athrowaway3z 23 hours ago

        I think you're both missing the forest for the trees. P2P connectivity is about as solved as it will get, and the last % will stay unsolved.

        The final goal for decentralization is something like: no central party should become the irreplaceable master over data, community, feeds, moderation, UI and identity.

        We already know the minimum pieces needed to avoid that kind of centralization: hashed, linked, signed records(/packets), so their validity and causal order don't depend on whatever connection carried them or whatever physical server received them.

        Once we have that, apps 'transcend' the connection layer, and the parties that control identity, community, feeds, moderation, etc become signing keys that can operate from anywhere.

        The real problem for a decentralized internet, or "local-first apps", is that writing applications at this layer, or writing the library that lets you write them, is hard and nobody has solved it.

        IIRC Iroh tried this early on, then pivoted to the p2p socket library it is today.

        I'm not sure where the Delft stack sits with its ambitions atm.

        • tancop 11 hours ago

          You're describing atproto. They solved all the problems and it's not hard to build on top of it. Maybe even easier than a traditional centralized app because your server is just a view over the network so don't need to worry about consistency or durability.

          There is one last centralized part they built to avoid using a blockchain, the PLC system, but it's designed to be tamper proof and easy to replace with a new server. The only thing a malicious operator can do is censorship in the p2p sense (ignoring a user's actions) but that would break trust and make the community migrate to a new provider.

          • athrowaway3z 7 hours ago

            Not atproto specifically. I’m describing primitives that exist in Git, Bitcoin, and plenty of other systems.

            What I’m getting at is that we haven’t nailed the right abstraction. A "sockets" or "HTTP/HTML" moment that collapses the design space, to such an extent we've collectively forgotten there were more complicated alternatives they replaced.

            These links are 2 examples of the problem: https://atproto.com/guides/understanding-atproto and https://atproto.com/articles/atproto-for-distsys-engineers.

            Somebody spend a lot of time and effort to make this as simple as possible. This is the best & simplest version of it.

            Yet its not simple enough. Repositories, event logs, view servers, DID, ...Lexicon RPC (XRPC)? What’s the minimal version of this that still works? Not an SDK hiding the concepts; fewer concepts.

            It’s hard to explain what I want precisely because I don’t think that abstraction exists yet. Maybe atproto gets us closer, but the on-ramp feels like endless links to sub-concepts. The average developer's eyes glaze over.

  • embedding-shape 1 day ago

    > You can't build a decentralized social media ecosystem on top. Like Iroh, best to use a central server. So then you have legal liability for your users.

    You can, ATProto has the example schematics for how, but it's has a federated rather than distributed architecture, but I don't think "federation" is a hard constraint of the design, more like an implementation detail, and as long as you can do the signalling centrally, to connect the peers, you can do the rest P2P. So sure, legal liability for the connection of peers, but all data transfers would still be directly P2P. AFAIK, Iroh also does "Centralized signaling > P2P data transfers", even when NAT is in the way.

  • skinfaxi 1 day ago

    The self-replicating seedbox is a cool idea. Some places offer interest on stable coin deposits. I wonder if there could be a way to set up an account for AI use that would be self-replenishing so long as a budget is maintained.

YCombinedBob 1 day ago

This actually looks good and uses the established Iroh.

Nice idea with the browser link to share with devices that dont have flipflop on the same LAN. This would be a killer if this would also work via internet! Not sure if Iroh can run in the browser though.

  • andunie 1 day ago

    This is a pretty good idea, it didn't occur to me, I'll try to implement it.

    I never tried Iroh in the browser, but supposedly it works (by always using a relay).

cold_boot 1 day ago

Keeping the tunnel available between sends is the nice part. Once it's set up with someone, you can just use it.

ramoz 1 day ago

Iroh released something similar awhile back

https://www.iroh.computer/sendme

  • rklaehn 5 hours ago

    Sendme and iroh-blobs author here.

    Sendme is a demo for iroh and a very useful standalone tool, but it is more about quick ad-hoc transfers.

    I think flipflop is using iroh-blobs for data transfer, so you can think about it as like sendme but with permanent connections.

mcoliver 1 day ago

Can you talk a bit about the performance characteristics? What's the max throughput? How does that change with latency and jitter?

rickcarlino 23 hours ago

I wish someone would revisit the idea of a single, global, P2P file search mesh like Gnutella/Gnutella2 but using a modern P2P stack (or WebRTC) instead of raw TCP/UDP like the old days.

  • hnav 23 hours ago

    IPFS?

    • rickcarlino 23 hours ago

      I don’t think IPFS was built for search. I see some unmaintained projects that sniff DHT traffic for hints, but (correct me if I am wrong here) the protocol maintainers never added a search layer. Eg I can’t search for “violin” and find the hash for “learn violin.pdf”.

  • sosodev 22 hours ago

    It’s something I’ve thought about a lot recently.

    I decided not to build it because I think open, decentralized, and encrypted file sharing with good search is something of a Pandora’s box.

kkapelon 1 day ago

Is it better/different than https://tailscale.com/docs/features/taildrop ?

  • janandonly 1 day ago

    It is better in one way: Taildrop supports iOS.

    • andunie 1 day ago

      I agree with this

  • embedding-shape 1 day ago

    Better, who knows. Seems different in that Flipflop uses P2P connections directly to the peer, alternatively via other available peers (and initial connection might use central signaling server), while taildrop seems to depend on a tailnet, which is typically hosted by Tailscale (unless you run that yourself).

    I guess it's a bit like comparing WeTransfer with Airdrop, one tries to use the network they're on already (internet) where the other favors local-local connections.

    • miyuru 1 day ago

      tailscale does P2P too, it only fails back relays to when it cannot do P2P.

    • kkapelon 1 day ago

      > which is typically hosted by Tailscale

      Tailscale hosts relay servers as a fallback. Connections are peer-to-peer between devices.

      • embedding-shape 1 day ago

        I think it always does the initial connection via the DERP relays, doesn't it? Even if a direct initial connection in theory is possible (no NATs or anything else in the way), the connection itself is always established via the relays, then "upgraded" to a local connection. But maybe they've changed this since I looked at it?

        Beyond that, even with a local connection established, all the coordination traffic will still go via the tailnet, those don't suddenly become local-first. But this might also have changed.

        What I'm sure is still there today, is that all Tailscale clients automatically upload their logs to Tailscale's servers unless you opt out:

        > Each Tailscale agent in your distributed network streams its logs to a central log server (at log.tailscale.com). This includes real-time events for open and close events for every inter-machine connection (TCP or UDP) on your network. - https://tailscale.com/docs/features/logging

        Of course, doesn't stop a local connection from working so is only tangentially related, but worth keeping in mind that a "local tailscale connection" still has a lot of external traffic related to it, even though the data you transfer, when possible, uses more local connections.

        • kkapelon 1 day ago

          It is two completely different things

          1. The co-ordination server for the initial handoff. You can self-host if you want

          2. Derp relays (for actual traffic). you can also self-host (peer relays)

          Actually if self-hosting is that important to you, there are also newer solutions like netbird and netmaker that might worth a look.

          • embedding-shape 1 day ago

            > It is two completely different things

            Yes, as I noted, those differences wouldn't stop you from sending data locally. But since parent originally requested how they're different (without stating what exactly is important for them), I figured it is important at least to note what actually is the difference between taildrop and Flipflop.

            It'd seem then if you wanted "local-first P2P transfer", with taildrop you'd need ~3 separate services running, unless I misunderstand you? Flipflop seems to do all those things in one package, although again, signaling (for NAT punching) is still via a central server.

            • kkapelon 1 day ago

              yes you understand correctly. The assumption is that you already have Tailscale for remote access and you get taildrop "for free". Installing tailscale just to get file sharing doesn't make sense if FlipFlop already does it and that is the only thing you need.

              Tailscale is super popular with people that have a homelab or nas/cameras/photos etc, and they have already solved the NAT problem (which iroh itself markets).

  • andunie 1 day ago

    Taildrop looks good, I didn't know about it.

    But it's more for when you already use Tailscale, which relies on a central server and someone who "owns" that network.

    In Flipflop you don't need anything besides the app, and each two peers form a "network" of their own, with no owner and no management.

    • kkapelon 1 day ago

      > which relies on a central server and someone who "owns" that network

      Tailscale connections are peer-to-peer. They only own the coordination server, which you can ignore and host your own.

      • andunie 1 day ago

        Yes, but someone, a user with an account on Tailscale, is the manager of that network and can decide what devices can get in, etc.

        For some cases that is good, but Flipflop is addressing a slightly different use case.

        • kkapelon 1 day ago

          The Readme literally says "Use it to share stuff between all your devices".

          I would argue that Tailnet is a good match for this.

          Maybe expand the readme to cover other use cases interesting to existing Tailscale users?

          • leodavi 1 day ago

            Yes but TailScale specifies "your devices" as "devices registered to a TS account" whereas FlipFlop specifies "your devices" to mean "your devices."

  • tamimio 1 day ago

    iroh is different and more than just a vpn, where you use a bunch of tools together, you can do it all in iroh with one identity, the tunnel, the file transfer, the ssh access, and others. Look at tunnet for example https://github.com/tunnetio/Tunnet to get a better idea.

combyn8tor 1 day ago

How do you get 50 contributors on a project with 116 stars that's 3 months old? There are no PR's? Only one issue?

StartingAbusine 1 day ago

Why native code?

I would think this could be done completely in the browser using WebRTC?

  • kennywinker 1 day ago

    Iroh networking isn’t available in browser, and presents some cool ways to link things together - i suspect the connection by using iroh is more robust and solid than webrtc, but i’m just guessing.

    • rklaehn 1 day ago

      There are some projects that implement an iroh webrtc custom transport that works in the browser. E.g. https://iroh-webrtc-demo.datei.jetzt/#?addpeer=fd4341f14b4eb...

      But iroh is designed bare metal first, we currently support the browser via WASM, but only with relay mode.

      We will solve browser eventually, but I think it is a mistake to build peer to peer tech browser first. We think it is better to make it extremely efficient on bare metal first, and then grow into the restricted browser ecosystem where possible.

      Browsers are very restricted environments.

      • andunie 1 day ago

        WebRTC only works in very specific conditions, most of the time you'll need a TURN server anyway, so it's probably better to just use an Iroh relay (you can run your own)

        • Sean-Der 1 day ago

          I see P2P working 80%+ of the time for my deployments. Other people have posted data about this also https://medium.com/the-making-of-appear-in/the-most-likely-t...

          P2P is better then TURN/Iroh Relay. Even if traffic is encrypted the size of what you are passing through is valuable metadata. Or the time at what you send things. P2P is always better for users.

          • andunie 1 day ago

            Of course P2P is better, my point was that it doesn't work in the browser most of the times, and your link seems to corroborate it.

    • fartfeatures 1 day ago

      That is strictly true but there are work arounds. For example you can talk to an Iroh relay server from inside of a browser. You can also get round this with extensions. Unfortunately Google whitelist who can do this but it can be done on Safari.

  • thejazzman 1 day ago

    the tl;dr seems to be simply that it wasn't implemented yet

    i've been pretty interested in this as well and got this snippet from chatgpt: `So could Iroh add direct browser-to-native connections without a proxy? Yes, by adding WebRTC support to the native side as well. Iroh’s own browser roadmap describes that approach and identifies the additional native WebRTC stack as a significant dependency cost. It does not describe a fundamental impossibility.`

    i may take a stab at adding this functionality soon

exe34 1 day ago

Nice idea, but for personal sharing between my devices, I have a syncthing folder that's synced between my laptop, phone and media center/NAS, and I've been finding that most of my day to day files have been migrating into it, and I hardly ever use things outside of it.

  • jboss10 1 day ago

    I have a similar setup. I have my git repos as headless repos in my syncthing folder and use it instead of github.

  • andunie 1 day ago

    I also use Syncthing, been using it for many years, it is great

layerv-ai 20 hours ago

Super cool!! and similar in spirit to our open source project `qURL` [0] where you temporarily share access to private files or localhost apps. Less focused on general Google drive-style file sharing and more focused on the privacy of sharing; like single-use links and login-gates.

Great to see people building open source in this space since p2p sharing gets a lot more expansive and harder to get right with AI agents.

Have you been using this with personal agents like instinct or grok bot? Would be a great way to share files without allowing full computer use/exposing more access than you have to!

[0] https://github.com/layervai/qurl-go

davidcollantes 1 day ago

Doesn’t Iroh rely on relays? If so, is it possible to run my own?

  • tionis 1 day ago

    Yes, it's even encouraged. You can either pay for the company behind iroh to host one for you or host your own one.

fartfeatures 1 day ago

I'm working on something similar, could you please turn on discussions so we can chat directly?

  • andunie 1 day ago

    I've turned discussions on, although we could chat here too

  • ramoz 1 day ago

    What are discussions?

rgbrgb 1 day ago

cool project. slint looks nice

> filesharing for the meatspace era

serious question: what does this mean lol

  • frumiousirc 1 day ago

    I assume individuals have to meet in order to become peers.

tamimio 1 day ago

Looks very interesting, I have been building few things on top of iroh past few weeks and I love it, from the ability to run it on some iot all the way to be rf agnostic (almost, can’t use LoRa with iroh due to its datagram limit), and best part, MoQ runs natively on iroh where on wireguard you will need to encrypt twice so more cpu, but i found kernel wireguard performs better at bulk throughput, and layer 3 isn’t by default unless you have TUN like added.

A list of iroh based tools are also found here https://github.com/n0-computer/awesome-iroh

  • dj0k3r 1 day ago

    Mind sharing the bit about IOT? I'm also looking for a way to get iroh working on something like esp32 for audio streaming. Was wondering if moq can be used here

    • rklaehn 5 hours ago

      Iroh works on most esp32. Here is a mixed bag of examples for various esp32 variants.

      https://github.com/n0-computer/iroh-esp32-examples

      Most examples that I did so far were about simple sensors, but audio streaming should work as well. If you need high bandwidth you might want to look into using the esp32 built in crypto hardware acceleration though.

      Although audio is probably fine, but if you want to do video via an esp32 you will need the hardware crypto.

  • nozzlegear 22 hours ago

    I've also been using Iroh lately, it's pretty neat. I use it to create a connection between my Mac and a pi that I shoved in a closet on an isolated network. The pi reads my house's electric and water meters with an rtl sdr device, and the Mac connects to it every 30 minutes or so to grab and record the latest readings. The pi doesn't have a stable ip (or, I didn't set it up with one), so the Mac uses an Iroh ticket to connect to the pi.

    It's much overengineered for what it's doing, and there are definitely less complicated ways to just connect to the pi, but half the fun is playing with new tech.