Privacy-first streaming. No ads. No tracking. No bullshit.
Movies, TV, anime, manga, live TV, sports, and PPV events — all from free sources.
The pirate streaming ecosystem has optimized for extraction. Sites scrape freely available content, then layer it with advertisements, tracking scripts, malware-laden popups, and background cryptocurrency miners. They do not host the media. They do not license it. They insert themselves between the user and material that was already free, converting attention and device resources into revenue. The prevailing assumption is that this exploitation is the unavoidable price of free access.
Flyx rejects that assumption.
Flyx aggregates movies, TV shows, anime, manga, live TV (850+ channels), live sports, and PPV events exclusively from the same free, unlicensed sources used by those sites. It never draws from legitimate platforms. It never touches services that pay for distribution rights. The sources are the free streams already circulating on the open internet. The difference is that every layer of monetization and surveillance is stripped away before the content reaches the user.
No advertisements. No tracking. No data sold to brokers. No miners. No personal information collected.
Flyx hosts nothing. It locates streams that already exist and delivers them cleanly through the user's own infrastructure — local machine, Docker host, or Cloudflare account. The operator controls the instance, the data, and access. No third party observes viewing history or even that the application is running.
Version 3.0 is a complete architectural rebuild. The previous single Next.js application has been replaced by a Turborepo monorepo of eleven packages with strict dependency boundaries. Types, error handling, caching, provider logic, extraction, and the video player each live in their own package — independently testable, versioned, and deployable. A new provider requires roughly fifteen lines. The player is composed of React hooks rather than a multi-thousand-line monolith. Errors carry machine-readable codes. Caching is a single unified layer.
The project is fully self-hosted and open source. It asks for no payment, no personal data, and no attention. Its purpose is to demonstrate that free streaming does not require exploiting the people who use it.
The sources remain the same. The extraction of value from the user does not.
Pirate sites make money by inserting themselves between you and content that was never theirs to sell. Flyx does the opposite: it removes every middleman between you and the stream. Nothing is hosted. Nothing is paywalled. Nothing is tracked. Here's how the pipeline cuts out the parasites.
The @flyx/providers package maintains a registry of 12+ sources in priority order, each as a lightweight class extending BaseProvider. When you search for content, the registry iterates through matching providers automatically — if a pirate site goes down or gets taken over, the next provider picks up without you noticing. Error isolation means one broken source never crashes your instance. Unlike the sprawling sites that embed 15 ad networks into every page, each provider is typically 15–30 lines of focused, auditable code.
All providers feed into a single ExtractionPipeline in @flyx/extractors. This is the only fetch path in the entire app — API routes, player hooks, and admin tools all use it. Results hit the UnifiedCache (TTL with stale-while-revalidate) in @flyx/core, so repeated requests return instantly. In 2.0, this logic was copy-pasted across 5 different files — a nightmare to audit. In 3.0, it's one path, one cache, and you can read every line of it.
This is where Flyx earns the "privacy-first" claim. A dedicated proxy (Bun server on :8787 for local/Docker, Cloudflare Worker for production) sits between your browser and every upstream CDN. It injects Referer and Origin headers so streams play correctly, rewrites M3U8 manifests for CORS, and — this is the important part — completely shields your real IP address from every content source. The upstream CDNs see the proxy, not you. Pirate sites want to know who you are so they can sell that information. Flyx makes that impossible.
The @flyx/player package provides composable React hooks for HLS.js playback — quality switching, subtitle tracks, keyboard shortcuts, Chromecast, AirPlay, stream URL copying. Each is its own hook, not a 5,000-line monolith like 2.0. The custom FetchLoader routes every segment request through the proxy layer. Your browser never talks directly to a CDN. No hidden iframes. No drive-by crypto miners. Just a video player that plays video.
The @flyx/config package detects your deployment target — local dev, Docker, Cloudflare, or Vercel — and selects the right database adapter (SQLite, D1, or Postgres), proxy backend, and environment automatically. One command to start. Zero code changes between platforms. Unlike the pirate ecosystem where you're at the mercy of whatever server some operator in a jurisdiction you'll never visit decides to keep online today, this is your infrastructure, your rules.
Flyx 2.0 was the original streaming platform — a single Next.js app with 20+ providers, a working video player, live TV, and a growing community. It proved the concept: free, private streaming was possible. But as the codebase grew past 30,000 lines with no architectural boundaries, every new feature became harder to ship. Provider logic leaked into the UI. Cache invalidation was guesswork. Errors were thrown as raw strings with no stack context.
Rather than keep patching the cracks, we chose to rebuild — not to add features, but to create a foundation that makes adding features easy. Everything that worked in 2.0 (streaming, providers, live TV, the player) was carried forward. Everything that held us back (the monolith, the error handling, the cache sprawl) was redesigned from scratch.
Flyx 2.0 was a working streaming platform, but it was held together by duct tape and hope. As the project grew, the cracks started showing. Flyx 3.0 was born out of the need to fix these architectural problems at the root.
Flyx 2.0 spread provider logic across 6 directories in a mix of JS and TS. Adding a single provider meant touching 5+ files. 3.0 isolates each provider to a single 15–30 line class.
2.0 threw raw strings and had 5+ different error handling systems. Debugging production issues meant grepping for string literals. 3.0 has one typed error hierarchy with machine-readable codes.
Four separate cache systems with no coordination meant stale data, cache stampedes, and wasted memory. 3.0's UnifiedCache deduplicates and coordinates all caching through a single layer.
Components were 5,000+ lines with no separation of concerns. You couldn't test a provider without booting the entire app. 3.0's package boundaries make every module independently testable.
2.0 had no manga support, no proper database, and no admin dashboard. Each feature was bolted on as an afterthought. 3.0 was designed from the ground up to accommodate manga, live TV, sync, and more.
Flyx 2.0 was hard to self-host — fragile config, no Docker support, and Cloudflare lock-in. 3.0 runs anywhere: local dev with SQLite, Docker with persistent volumes, or Cloudflare with D1 and Workers.
Flyx 3.0 is a ground-up architectural refactor of the 2.0 codebase. Every system was redesigned for reliability, maintainability, and performance.
11 packages with clear dependency boundaries. No more tangled 6-directory codebase — each concern is isolated, testable, and independently versioned.
Single fetch path for all providers with built-in caching. Flyx 2.0 duplicated extraction logic across 5 locations — 3.0 has one ExtractionPipeline used everywhere.
One FlyxError base class with typed subclasses. Every error carries machine-readable codes, HTTP status, and retry flags. No more string-throwing.
Tracked schema versions with transactional rollback. Flyx 2.0 ran CREATE TABLE IF NOT EXISTS on every request — a D1 anti-pattern that's been eliminated.
No experimental decorators. Providers register via a simple safeRegister() call with built-in error isolation. Each provider is just 15–30 lines.
One UnifiedCache with TTL, stale-while-revalidate, namespaces, and LRU eviction. Replaced 4 separate caching systems from 2.0.
You don't need to be a developer. If you can open a terminal and copy-paste,
you can run Flyx. Takes about 5 minutes. Requires Node.js 20+ and npm
(both free, one install). After the one-time setup, every command is just flyx.
Go to nodejs.org, download the LTS version, and run the installer. This gives you both Node.js and npm — everything Flyx needs. Already have it? Skip this step.
Windows: Press Win + R, type
cmd, hit Enter.
Mac: Press Cmd + Space, type
terminal, hit Enter.
Linux: You already know.
Copy this line, paste it into the terminal, press Enter:
git clone https://github.com/Vynx-Velvet/Flyx-main.git && cd Flyx-main
Don't have git? Install it here or download the zip instead.
Still in the Flyx-main folder, run:
npm install
This registers flyx as a system command so you can run it from anywhere:
npm run cli:link
Now you can use flyx just like git or npm —
from any folder, any terminal. One word, no paths, no npm run prefix.
All steps below assume you've done this.
Asks a few questions, writes your config. No manual file editing.
flyx setup
It'll ask: your TMDB API key (get one free here), a host key (make one up — it's your instance password for creating accounts), and whether this is a shared or personal server. That's it.
flyx start
Opens your browser to the sign-in page. The setup wizard already created your first account — just sign in and start watching. Your instance. Your rules. No ads. No tracking.
After linking the CLI in step 5, the flyx command works from
any terminal, any folder. No need to be in the Flyx directory.
Just open a terminal and type:
| Command | What it does |
|---|---|
flyx setup | Guided first-time setup wizard |
flyx start | Start Flyx and open your browser |
flyx stop | Stop the Flyx server |
flyx status | Check if Flyx is running and on what port |
flyx config | View all current settings |
flyx config set <key> <value> | Change a setting (e.g. flyx config set PORT 3000) |
flyx logs | Show recent server logs |
flyx update | Pull the latest code and rebuild |
flyx accounts list | List all user accounts on your instance |
flyx accounts create <user> <pass> | Add a user from the terminal |