# Roadmap **🌍 English · [فارسی below](#نقشهی-راه)** This is what Relay is going to do next, and — more usefully — *why*, and what would have to be true first. Nothing here is a promise with a date on it. It is a public statement of priority, so you can tell whether the thing you need is coming, is possible, or has been ruled out. If something you want is missing, [open an issue](https://github.com/Mahdi-mortazavi/relay/issues/new/choose). Requests move things up this list more often than you would think. --- ## ✅ Shipping now — 2.0 | | What it means for you | |---|---| | **WireGuard tunnel, TCP + UDP** | Every application on the PC goes through the phone. Games, calls, installers — not only the browser. | | **Pair by QR or two digits** | A laptop with no camera can still connect. Phones already sharing appear on the first screen, so it is usually one click. | | **Approval on the phone** | Keys are only handed out after the person holding the phone allows it, with the requesting computer's address shown. | | **Live statistics** | Download and upload speed, totals, tunnel latency, connection duration — read from the adapter, so they cannot drift from reality. | | **Honest connection state** | "Connected" means a real handshake completed. If the phone stops answering, Relay says so. | | **Follows a moving phone** | When the phone's address changes, the tunnel is re-pointed instead of dying. | | **English + Persian** | Every user-facing string, enforced by tests. | --- ## 🔨 Next ### Signed Windows installer **Why it matters:** Windows shows a scary warning on first run, and a fair number of people stop there. It is the single biggest thing standing between Relay and someone who has never heard of it. **What has to happen:** a code-signing certificate, and the release pipeline teaching to use it. This is a cost-and-paperwork problem, not a technical one. ### Split tunnelling / per-app routing **Why it matters:** right now the tunnel is all or nothing. If you want only your browser on the phone's connection while everything else uses the laptop's own, you cannot have it. **What has to happen:** the Windows client has to install routes for a subset of traffic, and the UI has to make "which apps" a question a person can answer without reading documentation. Tracked in [`docs/backlog.md`](docs/backlog.md). ### Sharing a phone that is itself on a VPN **Why it matters:** this is the most-reported limitation, and it is a real conflict rather than an oversight. Android routes by UID, and a full-tunnel VPN claims Relay's UID, so the tunnel's own traffic gets swallowed by the VPN. Relay **detects this today and tells you**, but detecting is not fixing. **What has to happen:** forwarded traffic has to go out through the VPN app's own local proxy rather than through Relay's socket. The approach is understood; the work is not done. See [`docs/vpn-compat.md`](docs/vpn-compat.md). --- ## 💭 Wanted, not scheduled ### Linux client — [#74](https://github.com/Mahdi-mortazavi/relay/issues/74) The phone side is already platform-agnostic: it speaks WireGuard and a small documented pairing protocol, both written down in [`/shared`](shared/). A Linux client is genuinely tractable — it is a matter of someone building the client half, and of my having a Linux machine to test it on honestly. **This is the single best place for a contributor to make a large difference.** ### macOS client Same story as Linux, with the added cost of Apple's signing and notarisation. ### IPv6 The tunnel is IPv4 today. Not hard, not yet prioritised, and it needs real hardware to prove rather than a runner. --- ## 🚫 Ruled out, on purpose These are not "not yet". They are decisions, and reversing one needs a written argument that beats the reasoning that produced it. | | Why not | |---|---| | **Accounts, servers, cloud sync** | Nothing leaves your two devices. Any change that adds a network call to anything but your own phone needs an ADR. | | **Telemetry or analytics** | Same rule. I would rather read your issue than your data. | | **A system-wide proxy mode** | This was Fast Mode, and it is removed. It carried TCP only, and a stranded proxy breaks every application on the machine. [ADR-0009](docs/adr/0009-full-mode-only-and-code-pairing.md). | | **Requiring root on the phone** | A tool most people cannot run is not a tool. | | **Multiple PCs on one sharing session** | The endpoint is configured with a single peer. Supporting several is possible but changes the security model, so it needs a real reason. | --- ## 🧭 How this list is decided In roughly this order: 1. **Anything that makes Relay lie.** A wrong state on screen outranks a missing feature, always. 2. **Anything that stops someone connecting at all.** The signing warning, the install failures, the VPN conflict. 3. **Anything hardware has not proved.** [`docs/testing.md`](docs/testing.md) is the list, and it is public for exactly this reason. 4. **New capability.** ---