mrkeyoor.com_
Sun 04 Oct 07:01 UTC
Dev Toolsevaluationupdated 04 Oct 2026

plexo review

Plexo is an Electron download manager that splits one HTTP file into byte ranges and sends them through several network interfaces at once. It can combine genuinely separate connections, such as home Wi-Fi and phone tethering, while resuming partial downloads and writing chunks directly into one staging file.

Verdict

Our Plexo run installed 576 packages and used 689 MB, then built in 15 seconds with 0 known npm vulnerabilities, so the source is workable but heavy for a downloader. Try it when you truly have separate uplinks and can verify that each one carries traffic. Wait if Windows route fidelity, signed binaries, or a measured green test suite is a release requirement.

We ran it

Lab card: what happened when we ran plexoScreenshot of plexo (anmolkapil.github.io/plexo)
Install✓ · 28s576 packages · 689 MB
Build✓ · 15s
Testsn/ano test script
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo132 files~14,554 lines of source · 2.4 MB · 2 CI workflows

Answers from our run

Does plexo build from source?

Dependencies installed in 28 seconds (576 packages), and the build succeeded in 15 seconds. We cloned commit 1200c96 into a clean Debian container with 3 CPUs and no project-specific setup.

Does plexo have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does plexo have known vulnerabilities in its dependencies?

npm audit found none in the dependency tree at the time of our run.

Who should not use plexo?

Users connecting Wi-Fi and Ethernet to the same router: the README says they share one upstream link and will not add bandwidth.

What are the alternatives to plexo?

aria2, Persepolis Download Manager, Motrix. Our Plexo run installed 576 packages and used 689 MB, then built in 15 seconds with 0 known npm vulnerabilities, so the source is workable but heavy for a downloader.

Setup3/5Build passed, but 576 packages and source-only distribution add work
Docs5/5Routing limits, ranges, resume logic, and platform setup are detailed
Community4/51,380 stars and active October issue and PR traffic
Maturity3/5Core build works; no release and a Windows routing issue remain

Who it’s for

Desktop users who regularly download large HTTP files and have two independent internet connections.
Developers testing range requests, interface-bound sockets, retries, and resumable writes.
Windows, macOS, or Linux users willing to build the application from source.
People who can measure whether mobile-data cost and server limits make aggregation worthwhile.

Who it’s NOT for

Users connecting Wi-Fi and Ethernet to the same router: the README says they share one upstream link and will not add bandwidth.
Anyone who needs a finished binary release: GitHub reports no published release, and the README says prebuilt releases are unavailable.
Windows users who require proven per-interface routing: open issue 65 reports that source-address binding can still send traffic through the wrong route.
People expecting a general queue-based download manager: issue 62 asks for multiple-file queues, and the current interface starts from one URL.
Small systems where a 689 MB installed dependency tree is excessive for a downloader.

Setup reality

Our Node 22 sandbox installed commit 1200c96 in 28 seconds, adding 576 packages and occupying 689 MB. The build succeeded in 15 seconds, and npm audit reported 0 known vulnerabilities across all severities.

The measured commit had no test script or target, so our harness skipped tests. The current README now documents Playwright end-to-end commands, but those are not results from our run and we do not claim they passed.

Plexo needs Node.js 22.12 or newer and npm 9 or newer. Combining bandwidth also needs separate routed internet connections; macOS Android tethering requires TetherKit, and packaged Windows and macOS builds are unsigned.

Two adapters help only when they lead to two internet connections

Plexo's useful trick is easy to misunderstand. It divides one file into HTTP byte ranges, opens workers on selected network interfaces, and writes each range at its final position in a staging file. Faster interfaces pull more chunks from a shared queue. If your laptop uses home Wi-Fi and a phone's cellular tether, both connections can contribute to the same download.

Wi-Fi and Ethernet plugged into the same router do not create another upstream connection. The README says the operating system will normally favor one route, while both adapters still share the same broadband service. Plexo also needs the remote server to honor range requests. It probes with a 1-byte ranged GET and falls back to one ordinary stream when the server returns 200 OK instead of 206 Partial Content.

Eight-megabyte chunks favor recovery and uneven links

Plexo uses chunks up to 8 MB and can start each interface with 8 connections, increasing to 32 when the server accepts them. The shared queue gives a fast link more work instead of reserving half the file for a slow one. Near the end, an idle connection may race a slow chunk and keep whichever attempt finishes first. That can prevent one lagging worker from holding the whole file open.

Resume handling is more careful than a blind restart. Plexo keeps partial data in a destination-side .plexo file and stores a small manifest in application data. Before continuing, it compares the remote ETag and Last-Modified values. If the source changed, it refuses to combine old and new ranges. Completed data is flushed and renamed in place, avoiding a second full-file assembly copy.

What happened when we ran it

Our sandbox installed commit 1200c96 in 28 seconds with Node 22. The install added 576 packages and occupied 689 MB on disk. The build completed in 15 seconds. Npm audit reported 0 known vulnerabilities: 0 critical, 0 high, 0 moderate, and 0 low in the dependency tree we tested.

The measured repository had 132 files, about 14,554 lines of source, and a 2.4 MB checkout. It included 2 CI workflow files, no Dockerfile, and no tests directory. Our harness found no test script or target at that commit, so it skipped tests. A successful build is useful evidence, but it does not validate range integrity, resume behavior, or traffic distribution across real adapters.

The current README describes Playwright smoke, integrity, and chaos commands, while the current package metadata calls the software 1.0.0-rc.11. Those are project facts, not results from our measured commit. Anyone evaluating the latest branch should run the documented end-to-end suite on the operating systems and adapter combinations they plan to support.

Windows routing can miss the selected interface

Open issue 65 describes the most important current risk. A user tested Ethernet through one router and Wi-Fi through a mobile hotspot. Some traffic worked, but HTTPS connections on Wi-Fi failed while Ethernet was active because binding only the local source address did not always force Windows onto the intended route. The report proposes setting IP_UNICAST_IF with a helper and says that local modification worked.

That issue concerns Plexo's central promise, not a cosmetic corner. The interface list and colored progress grid can show the intended adapter, but the operating system decides the actual route unless the socket is pinned correctly. On Windows, verify public IP or route behavior per interface before assuming the chart represents independent networks. Linux has device pinning, while macOS relies on recognized network interfaces.

Source-only distribution adds platform chores

GitHub reports no published release, and the README tells users to build from source. Plexo targets Windows 10 or 11, macOS, and Linux. The packaging configuration produces Windows installers, macOS disk images, Linux AppImages, and Debian packages for supported architectures, but Windows and macOS local builds are unsigned. That matters on managed systems and for anyone redistributing binaries.

Android USB tethering on macOS needs a separate user-space RNDIS driver called TetherKit because macOS does not expose that phone connection natively. Windows may need the phone manufacturer's driver and can disable Wi-Fi when Ethernet connects unless a policy changes. These are operating-system constraints, yet they determine whether Plexo can see the second route at all.

October activity is fast, and still release-candidate activity

The repository was pushed on October 3, 2026. GitHub showed 1,380 stars and 14 combined open issues and pull requests. Recent work covers stream limits, network changes, direct-to-destination writes, IPv6, Windows packaging, and queue proposals. There is no GitHub release despite the rc.11 package version and release-related pull requests.

Plexo is worth an experiment for a narrow situation: one large ranged download, two metered or independent routes, and a user who can verify both. The 689 MB install and Electron surface are costly beside aria2. What you get in return is a clear per-network view and logic built around unequal links. Prove the route first; the colored squares come second.

Alternatives

ProjectWhat it isPick it when
aria2A mature command-line downloader supporting HTTP, FTP, SFTP, BitTorrent, and Metalink.pick this instead when protocol breadth, scripting, and a smaller non-Electron tool matter more than multi-interface graphics.
Persepolis Download ManagerA graphical download manager and aria2 front end for major desktop systems.pick this instead when you want a conventional queue and scheduler around an established download engine.
Motrix gh↗A desktop download manager for HTTP, FTP, BitTorrent, and magnet links.pick this instead when torrent support and ordinary multi-protocol downloads matter more than combining physical networks.

What people are saying

  1. [velocity-scout] anmolkapil/plexo

Sources

  1. Plexo README
  2. Plexo contributing and end-to-end test guide
  3. Windows interface-routing issue
  4. Multiple-download queue request

More dev tools reviews

github-stars-history · BrokenPipe · FGOAC-scooby · window-sweaters · qingjian · airlift · the whole board →