Skip to content
Chiehx0220Public
forked from Flow-Tube/Flow

About

Fathom: a Flow fork for Android with a built-in local web server and native Bilibili support (video, live, danmaku, downloads).

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

 
 

Latest commit

 

History

2,698 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Fathom: Your phone, your server, your feed.

English 繁體中文

Get it on GitHub Get it on Obtainium

Android 8.0+ Latest release Downloads License: GPL-3.0 Signed: SHA-256 certificate Tracking: none Fork of Flow


🌐 Your phone is the server
Open it in any browser on your Wi-Fi. Nothing to install.
📱 Your phone is the remote
Arrow pad, touchpad, quality, speed and voice search.
🎬 Native Bilibili
Search, playback, comments, danmaku and live rooms. No web view.
🧠 Recommends on the phone
FlowNeuro learns on the device. Nothing leaves it.
🧩 Everything from Flow
YouTube, SponsorBlock, DeArrow and downloads.
🔒 Nothing to sign up for
No account, no ads, no tracking.

📸 Screenshots

Home feed tuned to your taste Search across YouTube and Bilibili Bilibili live room with danmaku and a chat list Remote control screen Launcher icon picker

Home feed · Search YouTube and Bilibili · Bilibili live with danmaku and chat · Phone as a remote · Launcher icons

🏗 How it fits together

How Fathom fits together

🌐 Local web server

To watch on a computer, turn the server on and open it in any browser, with nothing to install. If you would rather have a dedicated desktop app, Flow's own Flow-Desktop is another option. Subscriptions, history, and watch-later come straight from the app.

Once it is on, the phone serves a web app on port 8080.

  • On the phone itself: http://localhost:8080
  • On any device on the same Wi-Fi: http://<phone-ip>:8080, with nothing to install there

Private networks only. The server answers devices on the same local network (your home Wi-Fi, or your phone's hotspot) and nothing else: not the internet, and not a web page of another site. Public Wi-Fi such as a cafe usually blocks devices from reaching each other, so there, connect the computer to your phone's hotspot. To reach it from outside the house, use a VPN such as Tailscale rather than opening a port.

Pairing code. The first time a browser opens the server, it asks for the 6-digit code shown on the phone (in Settings, and on the Remote screen). After that the browser stays paired. The "New code" button signs every browser out. Guessing is limited: a few wrong tries lock that device out for 10 minutes. The connection is plain HTTP, so someone capturing traffic on the same network could still read the code. Use it only on a network you trust, and turn it off when you are done.

In the web app:

  • Search, channels, playlists, subscriptions
  • A Library page: history, watch-later, playlists and downloads
  • Download from the watch page, choosing quality, format or audio only
  • An Up next card that autoplays, with a switch to turn it off
  • A Video.js 10 player, served from the device itself: quality menu, chapters, seek-bar thumbnails, subtitles, audio-only mode, shortcuts, resume
  • YouTube and Bilibili playback, with danmaku

The Fathom web page in a desktop browser

The web server and web page are inspired by localtube by diekaiju, rewritten for Fathom and extended with Bilibili.

🎮 Remote control

Away from the keyboard? Steer a Fathom screen from your phone instead.

  • Arrow pad with OK, Back, Home and Options, plus a touchpad
  • Playback controls, and shortcuts to Subscriptions and Library
  • Search by typing or by voice
  • A YouTube / Bilibili switch

🎬 Bilibili, natively

No web view. A Kotlin client talks to Bilibili's web API directly.

  • Search, channels (uploads, series, seasons), playback, quality, multi-part videos
  • Comments and danmaku, the comments that scroll across the video
  • Live rooms, with danmaku over the video and a chat list that shows avatars and super chats
  • Subscriptions, history, likes and playlists, alongside YouTube's

🧠 FlowNeuro

Every recommendation comes from FlowNeuro, A-EDev's on-device engine from Flow.

  • Learns from watches, skips, likes, searches, and how long you stay
  • Spots when you're bored of a topic and mixes in something new
  • Shows exactly what it knows about you, and lets you edit, export, or wipe it

What Fathom adds: Bilibili watches count toward the same profile as YouTube's, and a filter of Chinese filler words (我们, 这个, 大家 and the like) keeps them from showing up as topics. The engine itself is Flow's.

🔁 Bring your data

  • Import NewPipe or PipePipe subscription JSON. Bilibili channels and avatars come along.
  • Export the same JSON back to either app.

🔏 Verify the download

Every APK on the releases page is signed with the same key, and the release workflow refuses to publish one signed with any other. To check that a file is Fathom's, compare its signing certificate with this fingerprint using AppVerifier or apksigner:

Signing certificate SHA-256 fingerprint

2E:35:71:C4:F5:21:F7:1C:65:50:42:D9:D9:6F:BD:11:C2:95:B7:4E:28:8E:2F:31:72:66:CD:61:93:21:74:EA

apksigner verify --print-certs fathom.apk

Each release also carries checksums.txt, so sha256sum -c checksums.txt confirms a download is whole.

🛠 Build

git clone https://github.com/Chiehx0220/Fathom.git
cd Fathom
./gradlew assembleGithubDebug

Signed APKs are on the releases page, the newest stable release is marked Latest. Variants: foss (no updater), nightly (installs beside debug).

🧩 Under the hood

Paths are under app/src/main/java/io/github/aedev/flow/.

Where What
bilibili/ The client: an API facade split by area (video, search, comments, live, uploader), request signing, sessions, typed ids, models, deep links
data/paging/, player/stream/, ui/screens/playlists/ (Bilibili*) Mappers and glue that plug it into search, playback, and playlists
di/BilibiliModule.kt One shared session for the whole app
localserver/ The web server: routing, one backend per service, feeds, stream proxy, pairing, remote control, and the web player pages
app/src/test/ (bilibili/, localserver/) Offline replay tests: recorded Bilibili responses behind a fake HTTP layer, compared with saved baselines
upstream files (see FORK-DIFF.md) Small hooks, mostly passing a service id through

The rule: new code goes in new files, and upstream files only get a call into it. That keeps merges from upstream small, and a CI budget fails the build if the changed part of upstream grows. FORK-DIFF.md lists every upstream file touched (node scripts/fork-diff.js), and bilibili/PPE-REFERENCE.md records which PipePipeExtractor revision the client was ported from.

Everything else in Flow (SponsorBlock, DeArrow, music, Shorts, downloads, themes) is still here. See upstream.

🤖 How Fathom is built

Fathom has been developed with AI assistance from the outset: Claude Code (Anthropic) has been used throughout development.

Direction and quality remain my responsibility. I define the goals and make the design decisions, I review each change, and I decide what is merged and released. No commit, push or release is made without my instruction.

Quality is safeguarded as follows: unit tests and CodeQL run on every push; replay baselines pin Bilibili and web server behavior across refactors; a CI budget limits how much of upstream Flow's code Fathom changes (see FORK-DIFF.md); and every user-visible change is tested on a physical phone before release.

🙏 Credits

Flow and FlowNeuro by A-EDev · PipePipeExtractor by InfinityLoop1308 (the Bilibili client is based on it) · NewPipeExtractor · localtube by diekaiju · Video.js and hls.js

📄 License

Fathom is released under GPL-3.0. You are free to use, modify and share it, but any version you distribute must stay open source under the same license.

Flow, FlowNeuro included, is © 2025–2026 A-EDev. The changes and additions in Fathom are © 2026 Chiehx0220.

About

Fathom: a Flow fork for Android with a built-in local web server and native Bilibili support (video, live, danmaku, downloads).

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages