Replies: 5 comments 8 replies
-
|
RFC Brief Below is a first-pass RFC brief for a research track, not a roadmap commitment. Title Context Problem Statement Goals
Non-Goals for Phase 1
Recommended Scope for the First Research Spike
That is the smallest version that tests product value without accidentally building a full communications platform. Architecture Options
Cons:
Assessment:
Cons:
Assessment:
Cons:
Assessment:
Identity and Trust Requirements
This is the real hard part. The transfer engine is not the bottleneck. Identity and trust are. Transport Candidates to Evaluate
My current bias is that a wormhole-like capability model is the best conceptual fit for a first research spike, even if the eventual production system becomes hybrid. Security Requirements
Also, “obfuscated” should not be a primary design goal. Strong authenticated encryption and metadata minimization matter more than traffic camouflage. Product Risks
Recommendation Recommended research order:
Go / No-Go Criteria
Stop the track if any of these become true:
Bottom Line __ |
Beta Was this translation helpful? Give feedback.
-
|
One word: Syncthing. I'll expand on it later, though I already hinted it at various points 😉 |
Beta Was this translation helpful? Give feedback.
-
|
Follow-up: Direction, transfer-first, iroh spine, with a staged L0/L1/L2 research track After working through this with the team, here is where I have landed. Thanks @EhudKirsh: "Syncthing" was the right instinct (do not reinvent identity, relay, or NAT), and the Codex RFC correctly identifies identity and trust as the real bottleneck. This post refines the product model, adds the transport candidate the thread was missing, and proposes a staged track. First, a correction to the product model Codex read the idea as one-shot (wormhole-style ephemeral send). That is only one layer. The essence is simpler and more on-brand:
This reverses one of Codex's Non-Goals. He listed "no permanent address book." But if a peer is an endpoint like a server, then a peer address book is desirable, not scope-creep: a contact is just a saved connection that happens to be a person. This maps 1:1 onto iroh's thesis ("IP addresses break, dial keys instead"): a contact equals a saved public-key NodeID, that is, a permanent dialable address. The layered model
Historical note worth making: ICQ (RIP, 2024) had a Shared Folder in 2003 that "turned your computer into a mini file server," but it broke behind NAT and firewalls and had no E2E. The idea was 20 years early. Keet/Hyperdrive proves the same idea works today ("turns your computer into a mini file server," verbatim) with DHT hole-punching and signed append-only drives. We are not inventing the shared folder. We are finishing an idea that was imagined in 2003 and only became reliable now. Transport candidates
Decision: iroh as the spine. Rationale: our identity is file transfer, secure and reliable, and everything else is accessory. iroh gives dial-by-key identity (NodeID equals Ed25519), production-grade hole-punching, blind relay fallback (self-hostable, preserves our no-server-side-component posture), and Keet's Hypercore stack stays as a study base, not a dependency. We take Hyperdrive's append-only signed-drive model for L1 and reimplement the slice we need in Rust over iroh, the same way rclone and rsync were study bases for our existing engine. Interop with the live Hypercore/Pear ecosystem (joining the public Hyperswarm DHT) is appealing but is explicitly an accessory: it would force the heavier Hypercore-in-Rust track, and we will not pay that complexity until transfer is rock-solid first. Note that iroh and Hypercore do not share a wire protocol, so this is a real fork, deferred deliberately. Reuse story. In the engine, a peer-endpoint and a server-endpoint behave identically, so the DAG transfer engine and rsync-style delta we already own work against a peer with minimal new surface. The peer is "a remote that happens to be another AeroFTP user." Scope guardrail (chat). Once two peers share a live authenticated channel, chat and voice are nearly free technically, which is exactly the product-drift trap Codex flagged. We are not building a messenger; Keet already does that, superbly. The only in-scope human channel is transfer context: an inline note or comment attached to a transfer or shared drive. "A transfer tool with a human channel," never "a chat that moves files." Staged track (this is research, not a roadmap commitment)
Honest caveats. iroh is pre-1.0 (API churn), mitigated by it being a replaceable tunnel, not our core logic. Bottom line. Secure, reliable user-to-user transfer first; a peer is just another endpoint. iroh for the tunnel, Hyperdrive's model as inspiration for the shared drive, and everything else (chat, ecosystem interop) accessory and gated behind a working L0. Ehud pointed at the right mountain; this is the Rust-native route up it. This direction was worked through together with @axpnet in discussion; written up by Claude Opus 4.8 High, Linux station. |
Beta Was this translation helpful? Give feedback.
-
L0 results: it connects. Real cross-network measurements + Go/No-GoThe last follow-up in this thread proposed a staged track and promised an L0 spike: stand up an iroh endpoint, dial a peer by key, send one vault-encrypted, BLAKE3-verified blob between two AeroFTP instances, and put a Go/No-Go gate on measured success rates across real-world networks before any L1 work. That spike is done. Here is what we measured.
What we built (the L0 instrument)A tiny, isolated tool ( Getting there meant finding and fixing a handful of real iroh-0.92 issues (the hardcoded production relays reject TLS from our stack, so we use the staging relays; missing discovery; ALPN not advertised; a session-key ordering bug; and a stream-truncation bug that we closed with the receipt ACK). It went from "could not connect at all" to the numbers below. Real-network testsThe interesting run was across two genuinely different networks:
plus a same-LAN positive control. So this is an asymmetric, fixed-to-mobile pair, not a lab loopback. Results by category
Throughput
What the data says
Verdict: GO (connectivity gate)The number-one risk from the last post - does dial-by-key + hole-punch + relay actually connect reliably across real networks, the exact wall ICQ hit in 2003? - is retired for the conditions we tested. Against the §8 criteria: direct transfer succeeds often enough (yes, fixed-line to mobile), the pairing/trust UX fits one screen (the L0 stand-in is a pairing secret plus a fingerprint confirmation), and the scope stays "transfer, not chat". Honest caveats
What's next
Thanks @EhudKirsh for being part of the thread as always; the Syncthing instinct (do not reinvent identity, relay, or NAT) lines up with what the data shows. The transport question is answered; the interesting product questions (identity, trust, relay policy) are next. L0 spike and the cross-network measurement campaign run from the Linux dev stations; written up by Claude Opus 4.8. |
Beta Was this translation helpful? Give feedback.
-
Progress update: the RFC is now a working, gated engineWhen I opened this RFC I said the goal was not to rebuild something that already exists, but to find the missing link for the suite. Here is where the research stands. It now exists as a working engine on a research branch, validated gate by gate, with real transfer numbers. This is a status report, not a release. What it isA "drive" is a signed, encrypted, versioned folder that one user publishes and another verifies and replicates peer to peer, with no account and no central server holding the files.
Real transfer numbersA 128 MiB drive (one 128 MiB random blob plus three small files), published by one process and replicated by another, integrity verified on both sides: And the live cross-NAT gate, the one that matters most for a real user, with the replicator on a mobile hotspot: Methodology (technical)
The coordination channel was AeroFTP itselfThe work ran as two automated engineering sessions on two machines on two networks, one as publisher, one as replicator. They never shared a shell. They coordinated only over AeroFTP's own SFTP transport to a shared NAS, driven by the AeroFTP command line. The tool under construction was also the bus over which it was built. The protocol, technically:
AeroShare: a user is just another server in My ServersThe product surface for this has a name now: AeroShare. It is the design idea I am most happy with. AeroFTP is already a transfer fabric between endpoints, with a list of saved connections in My Servers and a dual-panel browser. So a friend is not a new app, it is a new kind of connection:
In other words, peer to peer is just a channel in the file manager. It is not a chat. The dual panel is the centerpiece. AeroShare is the GUI layer that exposes all of this, and it is now in progress on the same research branch. Correcting the recordOne cross-NAT gate was first described as a wide-area test. On review, both machines for that run were on the same home router, so the honest label was same network, not wide area. The cross-NAT realism was already proven separately on a mobile carrier, so the conclusion held, but the wording was overstated for that run and we fixed it. Noting it here because a test log is only worth trusting if it also reports the times the first claim was too strong. The direction that excites me: no operator in the middleA hard design line: this feature must not depend on infrastructure that I run. The goal is a network where every AeroFTP user is a node. Two further gates show this is reachable. Discovery can run purely over the public BitTorrent Mainline DHT, with no query to any default discovery service: in one gate the replicator was handed only a node identity, no addresses, and still located the publisher and completed the transfer. And relays can be federated: a peer publishes its own relay address to the DHT, another peer discovers it and connects to that relay even though it is not in its own set. A full transfer then runs with discovery on the DHT and a relay you run yourself, with no single operator on the path. Honest about what is not doneDelivery to a peer who is offline is not solved (both sides must be online for a live transfer, though the replicated copy stays browsable locally). Streaming for very large files is pending, which is why the 128 MiB number above is engine bound rather than link bound. A privacy and threat model writeup, a security review, and translations come before this leaves experimental. Feedback welcome, especially on the connectivity model (DHT discovery plus federated relays) and on whether "every user is a node" is the right north star to keep this independent. |
Beta Was this translation helpful? Give feedback.



Uh oh!
There was an error while loading. Please reload this page.
-
I know I have crazy ideas, but we're not here to create something that already exists, but to innovate and find solutions and ideas that no one has ever implemented. Therefore, given the new user management system, the idea that intrigues me is transferring files from one AeroFTP user to another via a p2p connection. I want to explore this topic for research and personal interest. I realize it's a very complex topic and would introduce completely unexpected features in a file transfer client, but I feel it could be the missing link to complete the suite. I'll evaluate the possible avenues and whether or not to officially advance the proposal in the roadmap.
Beta Was this translation helpful? Give feedback.
All reactions